{"id":"1e4892536580f49eebcf6f4553d3152f","_format":"hh-sol-build-info-1","solcVersion":"0.8.28","solcLongVersion":"0.8.28+commit.7893614a","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.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 reinitialization) 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 Pointer to storage slot. Allows integrators to override it with a custom storage location.\n     *\n     * NOTE: Consider following the ERC-7201 formula to derive storage locations.\n     */\n    function _initializableStorageSlot() internal pure virtual returns (bytes32) {\n        return INITIALIZABLE_STORAGE;\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        bytes32 slot = _initializableStorageSlot();\n        assembly {\n            $.slot := slot\n        }\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.22;\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 ERC-1967) 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 ERC-1167 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 ERC-1822 {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 ERC-1967 compliant implementation pointing to self.\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 ERC-1967.\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/utils/ReentrancyGuardUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.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 EIP-1153 (transient storage) is available on the chain you're deploying at,\n * consider using {ReentrancyGuardTransient} instead.\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/access/Ownable.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 {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * 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 Ownable is Context {\n    address private _owner;\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    constructor(address initialOwner) {\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        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        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\n"},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC-1822: 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/IERC1967.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n */\ninterface IERC1967 {\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"},"@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/ERC1967Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.22;\n\nimport {Proxy} from \"../Proxy.sol\";\nimport {ERC1967Utils} from \"./ERC1967Utils.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy {\n    /**\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n     *\n     * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n     * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n     *\n     * Requirements:\n     *\n     * - If `data` is empty, `msg.value` must be zero.\n     */\n    constructor(address implementation, bytes memory _data) payable {\n        ERC1967Utils.upgradeToAndCall(implementation, _data);\n    }\n\n    /**\n     * @dev Returns the current implementation address.\n     *\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n     */\n    function _implementation() internal view virtual override returns (address) {\n        return ERC1967Utils.getImplementation();\n    }\n}\n"},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.22;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {IERC1967} from \"../../interfaces/IERC1967.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This library provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\n */\nlibrary ERC1967Utils {\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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/proxy/Proxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n    /**\n     * @dev Delegates the current call to `implementation`.\n     *\n     * This function does not return to its internal call site, it will return directly to the external caller.\n     */\n    function _delegate(address implementation) internal virtual {\n        assembly {\n            // Copy msg.data. We take full control of memory in this inline assembly\n            // block because it will not return to Solidity code. We overwrite the\n            // Solidity scratch pad at memory position 0.\n            calldatacopy(0, 0, calldatasize())\n\n            // Call the implementation.\n            // out and outsize are 0 because we don't know the size yet.\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n            // Copy the returned data.\n            returndatacopy(0, 0, returndatasize())\n\n            switch result\n            // delegatecall returns 0 on error.\n            case 0 {\n                revert(0, returndatasize())\n            }\n            default {\n                return(0, returndatasize())\n            }\n        }\n    }\n\n    /**\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n     * function and {_fallback} should delegate.\n     */\n    function _implementation() internal view virtual returns (address);\n\n    /**\n     * @dev Delegates the current call to the address returned by `_implementation()`.\n     *\n     * This function does not return to its internal call site, it will return directly to the external caller.\n     */\n    function _fallback() internal virtual {\n        _delegate(_implementation());\n    }\n\n    /**\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n     * function in the contract matches the call data.\n     */\n    fallback() external payable virtual {\n        _fallback();\n    }\n}\n"},"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/ProxyAdmin.sol)\n\npragma solidity ^0.8.22;\n\nimport {ITransparentUpgradeableProxy} from \"./TransparentUpgradeableProxy.sol\";\nimport {Ownable} from \"../../access/Ownable.sol\";\n\n/**\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\n */\ncontract ProxyAdmin is Ownable {\n    /**\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address,address)`\n     * and `upgradeAndCall(address,address,bytes)` are present, and `upgrade` must be used if no function should be called,\n     * while `upgradeAndCall` will invoke the `receive` function if the third argument is the empty byte string.\n     * If the getter returns `\"5.0.0\"`, only `upgradeAndCall(address,address,bytes)` is present, and the third 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 Sets the initial owner who can perform upgrades.\n     */\n    constructor(address initialOwner) Ownable(initialOwner) {}\n\n    /**\n     * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation.\n     * See {TransparentUpgradeableProxy-_dispatchUpgradeToAndCall}.\n     *\n     * Requirements:\n     *\n     * - This contract must be the admin of `proxy`.\n     * - If `data` is empty, `msg.value` must be zero.\n     */\n    function upgradeAndCall(\n        ITransparentUpgradeableProxy proxy,\n        address implementation,\n        bytes memory data\n    ) public payable virtual onlyOwner {\n        proxy.upgradeToAndCall{value: msg.value}(implementation, data);\n    }\n}\n"},"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/TransparentUpgradeableProxy.sol)\n\npragma solidity ^0.8.22;\n\nimport {ERC1967Utils} from \"../ERC1967/ERC1967Utils.sol\";\nimport {ERC1967Proxy} from \"../ERC1967/ERC1967Proxy.sol\";\nimport {IERC1967} from \"../../interfaces/IERC1967.sol\";\nimport {ProxyAdmin} from \"./ProxyAdmin.sol\";\n\n/**\n * @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\n * does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\n * mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\n * include them in the ABI so this interface must be used to interact with it.\n */\ninterface ITransparentUpgradeableProxy is IERC1967 {\n    /// @dev See {UUPSUpgradeable-upgradeToAndCall}\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable;\n}\n\n/**\n * @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\n *\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n * clashing], which can potentially be used in an attack, this contract uses the\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n * things that go hand in hand:\n *\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n * that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\n * 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\n * the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\n * the proxy admin cannot fallback to the target implementation.\n *\n * These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\n * dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\n * call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\n * allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\n * interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\n *\n * NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\n * inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\n * mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\n * fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\n * implementation.\n *\n * NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\n * meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\n *\n * IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\n * immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\n * overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\n * undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\n * is generally fine if the implementation is trusted.\n *\n * WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\n * compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\n * function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\n * could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\n */\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\n    // An immutable address for the admin to avoid unnecessary SLOADs before each call\n    // at the expense of removing the ability to change the admin once it's set.\n    // This is acceptable if the admin is always a ProxyAdmin instance or similar contract\n    // with its own ability to transfer the permissions to another account.\n    address private immutable _admin;\n\n    /**\n     * @dev The proxy caller is the current admin, and can't fallback to the proxy target.\n     */\n    error ProxyDeniedAdminAccess();\n\n    /**\n     * @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\n     * backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\n     * {ERC1967Proxy-constructor}.\n     */\n    constructor(address _logic, address initialOwner, bytes memory _data) payable ERC1967Proxy(_logic, _data) {\n        _admin = address(new ProxyAdmin(initialOwner));\n        // Set the storage value and emit an event for ERC-1967 compatibility\n        ERC1967Utils.changeAdmin(_proxyAdmin());\n    }\n\n    /**\n     * @dev Returns the admin of this proxy.\n     */\n    function _proxyAdmin() internal view virtual returns (address) {\n        return _admin;\n    }\n\n    /**\n     * @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior.\n     */\n    function _fallback() internal virtual override {\n        if (msg.sender == _proxyAdmin()) {\n            if (msg.sig != ITransparentUpgradeableProxy.upgradeToAndCall.selector) {\n                revert ProxyDeniedAdminAccess();\n            } else {\n                _dispatchUpgradeToAndCall();\n            }\n        } else {\n            super._fallback();\n        }\n    }\n\n    /**\n     * @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\n     *\n     * Requirements:\n     *\n     * - If `data` is empty, `msg.value` must be zero.\n     */\n    function _dispatchUpgradeToAndCall() private {\n        (address newImplementation, bytes memory data) = abi.decode(msg.data[4:], (address, bytes));\n        ERC1967Utils.upgradeToAndCall(newImplementation, data);\n    }\n}\n"},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC1155/IERC1155.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC-1155 compliant contract, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1155[ERC].\n */\ninterface IERC1155 is IERC165 {\n    /**\n     * @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.\n     */\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n    /**\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n     * transfers.\n     */\n    event TransferBatch(\n        address indexed operator,\n        address indexed from,\n        address indexed to,\n        uint256[] ids,\n        uint256[] values\n    );\n\n    /**\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n     * `approved`.\n     */\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n\n    /**\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n     *\n     * If an {URI} event was emitted for `id`, the standard\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n     * returned by {IERC1155MetadataURI-uri}.\n     */\n    event URI(string value, uint256 indexed id);\n\n    /**\n     * @dev Returns the value of tokens of token type `id` owned by `account`.\n     */\n    function balanceOf(address account, uint256 id) external view returns (uint256);\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n     *\n     * Requirements:\n     *\n     * - `accounts` and `ids` must have the same length.\n     */\n    function balanceOfBatch(\n        address[] calldata accounts,\n        uint256[] calldata ids\n    ) external view returns (uint256[] memory);\n\n    /**\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n     *\n     * Emits an {ApprovalForAll} event.\n     *\n     * Requirements:\n     *\n     * - `operator` cannot be the zero address.\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n     *\n     * See {setApprovalForAll}.\n     */\n    function isApprovedForAll(address account, address operator) external view returns (bool);\n\n    /**\n     * @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.\n     *\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver.\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\n     * reentrancy guards when interacting with untrusted contracts.\n     *\n     * Emits a {TransferSingle} event.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n     * - `from` must have a balance of tokens of type `id` of at least `value` amount.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n     * acceptance magic value.\n     */\n    function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata data) external;\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n     *\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver.\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\n     * reentrancy guards when interacting with untrusted contracts.\n     *\n     * Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments.\n     *\n     * Requirements:\n     *\n     * - `ids` and `values` must have the same length.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n     * acceptance magic value.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata values,\n        bytes calldata data\n    ) external;\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\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/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC-721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n    /**\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n     */\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n     */\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    /**\n     * @dev Returns the number of tokens in ``owner``'s account.\n     */\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    /**\n     * @dev Returns the owner of the `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function ownerOf(uint256 tokenId) external view returns (address owner);\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n     *   a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n     *   {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n     *   a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Transfers `tokenId` token from `from` to `to`.\n     *\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 tokenId) external;\n\n    /**\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n     * The approval is cleared when the token is transferred.\n     *\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n     *\n     * Requirements:\n     *\n     * - The caller must own the token or be an approved operator.\n     * - `tokenId` must exist.\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address to, uint256 tokenId) external;\n\n    /**\n     * @dev Approve or remove `operator` as an operator for the caller.\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n     *\n     * Requirements:\n     *\n     * - The `operator` cannot be the address zero.\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function setApprovalForAll(address operator, bool approved) external;\n\n    /**\n     * @dev Returns the account approved for `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function getApproved(uint256 tokenId) external view returns (address operator);\n\n    /**\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n     *\n     * See {setApprovalForAll}\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev There's no code at `target` (it is not a contract).\n     */\n    error AddressEmptyCode(address target);\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 Errors.InsufficientBalance(address(this).balance, amount);\n        }\n\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\"\");\n        if (!success) {\n            _revert(returndata);\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\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 {Errors.FailedCall}) in case\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\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            assembly (\"memory-safe\") {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert Errors.FailedCall();\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n\n    function _contextSuffixLength() internal view virtual returns (uint256) {\n        return 0;\n    }\n}\n"},"@openzeppelin/contracts/utils/Errors.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of common custom errors used in multiple contracts\n *\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n * It is recommended to avoid relying on the error API for critical functionality.\n *\n * _Available since v5.1._\n */\nlibrary Errors {\n    /**\n     * @dev The ETH balance of the account is not enough to perform the operation.\n     */\n    error InsufficientBalance(uint256 balance, uint256 needed);\n\n    /**\n     * @dev A call to an address target failed. The target may have reverted.\n     */\n    error FailedCall();\n\n    /**\n     * @dev The deployment failed.\n     */\n    error FailedDeployment();\n\n    /**\n     * @dev A necessary precompile is missing.\n     */\n    error MissingPrecompile(address);\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\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 *\n * TIP: Consider using this library along with {SlotDerivation}.\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 Int256Slot {\n        int256 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        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\n     */\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\n     */\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n        assembly (\"memory-safe\") {\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        assembly (\"memory-safe\") {\n            r.slot := store.slot\n        }\n    }\n\n    /**\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\n     */\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n        assembly (\"memory-safe\") {\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        assembly (\"memory-safe\") {\n            r.slot := store.slot\n        }\n    }\n}\n"},"contracts/interfaces/IVideoPayment.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\n\nimport \"../libraries/VideoPaymentStorage.sol\";\n\n/**\n * @title IVideoPayment\n * @dev Interface for VideoPayment contract\n */\ninterface IVideoPayment {\n    // Custom errors\n    error NotOwner();\n    error NotAdmin();\n    error ContractPaused();\n    error InvalidContent();\n    error UnsupportedToken();\n    error InsufficientPayment();\n    error NoValidPermission();\n    error ArrayLengthMismatch();\n    error ZeroAddress();\n    error InvalidAmount();\n\n    // Events - Purchase related\n    event ContentPurchased(\n        address indexed user,\n        uint256 indexed contentId,\n        address paymentToken,\n        uint256 amount,\n        uint256 viewCount,\n        uint256 validUntil\n    );\n\n    event NativePurchased(\n        address indexed user,\n        uint256 indexed contentId,\n        uint256 amount,\n        uint256 viewCount,\n        uint256 validUntil\n    );\n\n    event BatchPurchased(\n        address indexed user,\n        uint256[] contentIds,\n        address paymentToken,\n        uint256 totalAmount\n    );\n\n    event BatchNativePurchased(\n        address indexed user,\n        uint256[] contentIds,\n        uint256 totalAmount\n    );\n\n    event NFTPurchased(\n        address indexed user,\n        uint256 indexed contentId,\n        address nftContract,\n        uint256 tokenId\n    );\n\n    // Events - Permission related\n    event ViewConsumed(\n        address indexed user,\n        uint256 indexed contentId,\n        uint256 remainingViews\n    );\n\n    event PermissionExpired(address indexed user, uint256 indexed contentId);\n\n    // Events - Management related\n    event AdminAdded(address indexed admin);\n    event AdminRemoved(address indexed admin);\n    event ContentConfigUpdated(uint256 indexed contentId);\n    event TokenPriceUpdated(\n        uint256 indexed contentId,\n        address indexed token,\n        uint256 price\n    );\n    event NativePriceUpdated(uint256 indexed contentId, uint256 price);\n    event SupportedTokenAdded(address indexed token);\n    event SupportedTokenRemoved(address indexed token);\n    event Paused();\n    event Unpaused();\n    event Upgraded(address indexed newImplementation);\n\n    // Owner management functions\n    function addAdmin(address admin) external;\n    function removeAdmin(address admin) external;\n\n    // Content management functions\n    function setContentConfig(\n        uint256 contentId,\n        uint256 nativePrice,\n        uint256 defaultViewCount,\n        uint256 viewDuration,\n        bool isActive\n    ) external;\n    function batchSetContentConfig(\n        uint256[] memory contentIds,\n        uint256[] memory nativePrices,\n        uint256[] memory defaultViewCounts,\n        uint256[] memory viewDurations,\n        bool[] memory isActiveArray\n    ) external;\n    function isContentActive(uint256 contentId) external view returns (bool);\n\n    // Price management functions\n    function updateTokenPrice(\n        uint256 contentId,\n        address token,\n        uint256 price\n    ) external;\n    function batchUpdateTokenPrice(\n        uint256[] memory contentIds,\n        address token,\n        uint256[] memory prices\n    ) external;\n    function updateNativePrice(uint256 contentId, uint256 price) external;\n    function batchUpdateNativePrice(\n        uint256[] memory contentIds,\n        uint256[] memory prices\n    ) external;\n\n    // Payment token management functions\n    function addSupportedToken(address token) external;\n    function removeSupportedToken(address token) external;\n    function isSupportedToken(address token) external view returns (bool);\n\n    // Purchase functions\n    function purchaseContent(\n        uint256 contentId,\n        address paymentToken,\n        uint256 amount\n    ) external;\n    function purchaseWithNative(uint256 contentId) external payable;\n    function batchPurchase(\n        uint256[] memory contentIds,\n        address paymentToken,\n        uint256 totalAmount\n    ) external;\n    function batchPurchaseWithNative(\n        uint256[] memory contentIds\n    ) external payable;\n    function purchaseWithNFT(\n        uint256 contentId,\n        address nftContract,\n        uint256 tokenId\n    ) external;\n\n    // Permission verification functions\n    function hasViewPermission(\n        address user,\n        uint256 contentId\n    ) external view returns (bool);\n    function getUserPermissions(\n        address user,\n        uint256[] memory contentIds\n    ) external view returns (VideoPaymentStorage.ViewPermission[] memory);\n    function getPermissionDetails(\n        address user,\n        uint256 contentId\n    ) external view returns (VideoPaymentStorage.ViewPermission memory);\n    function consumeView(\n        address user,\n        uint256 contentId\n    ) external returns (bool);\n    function batchConsumeView(\n        address[] memory users,\n        uint256[] memory contentIds\n    ) external returns (bool[] memory);\n\n    // Emergency control functions\n    function pause() external;\n    function unpause() external;\n\n    // Upgrade functions\n    function version() external view returns (uint256);\n    function migrate() external;\n}\n"},"contracts/libraries/VideoPaymentStorage.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\n\n/**\n * @title VideoPaymentStorage\n * @dev Storage layout for VideoPayment contract to ensure upgrade compatibility\n */\nlibrary VideoPaymentStorage {\n    // Storage layout version for upgrade compatibility\n    uint256 constant STORAGE_VERSION = 1;\n\n    struct ContentConfig {\n        mapping(address => uint256) tokenPrices; // ERC20 token prices\n        uint256 nativePrice; // Native coin price\n        uint256 defaultViewCount; // Default view count when purchased\n        uint256 viewDuration; // View validity duration in seconds\n        bool isActive; // Whether content is purchasable\n    }\n\n    struct ViewPermission {\n        uint256 purchaseTime; // Purchase timestamp\n        uint256 remainingViews; // Remaining view count\n        bool isValid; // Whether permission is valid\n    }\n\n    struct VideoPaymentStorageStruct {\n        // Owner and admin management\n        address owner;\n        mapping(address => bool) isAdmin;\n        // Content management\n        mapping(uint256 => ContentConfig) contentConfigs;\n        // User permissions\n        mapping(address => mapping(uint256 => ViewPermission)) userPermissions;\n        // Supported payment tokens\n        mapping(address => bool) supportedTokens;\n        // Emergency pause\n        bool paused;\n        // Contract version\n        uint256 version;\n        // Reserved storage slots for future upgrades\n        uint256[50] __gap;\n    }\n}\n"},"contracts/VideoPayment.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\";\nimport \"./interfaces/IVideoPayment.sol\";\nimport \"./libraries/VideoPaymentStorage.sol\";\n\n/**\n * @title VideoPayment\n * @dev Main contract for video content payment and access control\n */\ncontract VideoPayment is\n    Initializable,\n    UUPSUpgradeable,\n    ReentrancyGuardUpgradeable,\n    IVideoPayment\n{\n    using VideoPaymentStorage for VideoPaymentStorage.VideoPaymentStorageStruct;\n\n    // Storage\n    VideoPaymentStorage.VideoPaymentStorageStruct private _storage;\n\n    // Modifiers\n    modifier onlyOwner() {\n        if (msg.sender != _storage.owner) revert NotOwner();\n        _;\n    }\n\n    modifier onlyAdmin() {\n        if (!_storage.isAdmin[msg.sender]) revert NotAdmin();\n        _;\n    }\n\n    modifier whenNotPaused() {\n        if (_storage.paused) revert ContractPaused();\n        _;\n    }\n\n    modifier validContent(uint256 contentId) {\n        if (!_storage.contentConfigs[contentId].isActive)\n            revert InvalidContent();\n        _;\n    }\n\n    /// @custom:oz-upgrades-unsafe-allow constructor\n    constructor() {\n        _disableInitializers();\n    }\n\n    /**\n     * @dev Initialize the contract\n     * @param initialOwner Initial owner address\n     * @param initialAdmins Initial admin addresses array\n     * @param supportedTokenAddresses Initial supported token addresses array\n     */\n    function initialize(\n        address initialOwner,\n        address[] memory initialAdmins,\n        address[] memory supportedTokenAddresses\n    ) public initializer {\n        if (initialOwner == address(0)) revert ZeroAddress();\n\n        __UUPSUpgradeable_init();\n        __ReentrancyGuard_init();\n\n        _storage.owner = initialOwner;\n        _storage.version = 1;\n        _storage.paused = false;\n\n        // Add initial admins\n        for (uint256 i = 0; i < initialAdmins.length; i++) {\n            if (initialAdmins[i] != address(0)) {\n                _storage.isAdmin[initialAdmins[i]] = true;\n                emit AdminAdded(initialAdmins[i]);\n            }\n        }\n\n        // Add initial supported tokens\n        for (uint256 i = 0; i < supportedTokenAddresses.length; i++) {\n            if (supportedTokenAddresses[i] != address(0)) {\n                _storage.supportedTokens[supportedTokenAddresses[i]] = true;\n                emit SupportedTokenAdded(supportedTokenAddresses[i]);\n            }\n        }\n    }\n\n    /**\n     * @dev Get contract version\n     */\n    function version() external view returns (uint256) {\n        return _storage.version;\n    }\n\n    /**\n     * @dev Migration function for future upgrades\n     */\n    function migrate() external onlyOwner {\n        // This function will be implemented in future versions if needed\n        // Currently just emit event for tracking\n        emit Upgraded(address(this));\n    }\n\n    /**\n     * @dev Authorize upgrade (required by UUPSUpgradeable)\n     */\n    function _authorizeUpgrade(\n        address newImplementation\n    ) internal override onlyOwner {}\n\n    // ============ Owner Management Functions ============\n\n    /**\n     * @dev Add admin\n     * @param admin Admin address to add\n     */\n    function addAdmin(address admin) external onlyOwner {\n        if (admin == address(0)) revert ZeroAddress();\n        _storage.isAdmin[admin] = true;\n        emit AdminAdded(admin);\n    }\n\n    /**\n     * @dev Remove admin\n     * @param admin Admin address to remove\n     */\n    function removeAdmin(address admin) external onlyOwner {\n        if (admin == address(0)) revert ZeroAddress();\n        _storage.isAdmin[admin] = false;\n        emit AdminRemoved(admin);\n    }\n\n    // ============ Content Management Functions ============\n\n    /**\n     * @dev Set content configuration\n     * @param contentId Content ID\n     * @param nativePrice Native coin price\n     * @param defaultViewCount Default view count\n     * @param viewDuration View duration in seconds\n     * @param isActive Whether content is active\n     */\n    function setContentConfig(\n        uint256 contentId,\n        uint256 nativePrice,\n        uint256 defaultViewCount,\n        uint256 viewDuration,\n        bool isActive\n    ) external onlyAdmin {\n        _storage.contentConfigs[contentId].nativePrice = nativePrice;\n        _storage.contentConfigs[contentId].defaultViewCount = defaultViewCount;\n        _storage.contentConfigs[contentId].viewDuration = viewDuration;\n        _storage.contentConfigs[contentId].isActive = isActive;\n\n        emit ContentConfigUpdated(contentId);\n    }\n\n    /**\n     * @dev Batch set content configurations\n     * @param contentIds Content ID array\n     * @param nativePrices Native price array\n     * @param defaultViewCounts Default view count array\n     * @param viewDurations View duration array\n     * @param isActiveArray Active status array\n     */\n    function batchSetContentConfig(\n        uint256[] memory contentIds,\n        uint256[] memory nativePrices,\n        uint256[] memory defaultViewCounts,\n        uint256[] memory viewDurations,\n        bool[] memory isActiveArray\n    ) external onlyAdmin {\n        if (\n            contentIds.length != nativePrices.length ||\n            contentIds.length != defaultViewCounts.length ||\n            contentIds.length != viewDurations.length ||\n            contentIds.length != isActiveArray.length\n        ) revert ArrayLengthMismatch();\n\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            _storage.contentConfigs[contentIds[i]].nativePrice = nativePrices[\n                i\n            ];\n            _storage\n                .contentConfigs[contentIds[i]]\n                .defaultViewCount = defaultViewCounts[i];\n            _storage.contentConfigs[contentIds[i]].viewDuration = viewDurations[\n                i\n            ];\n            _storage.contentConfigs[contentIds[i]].isActive = isActiveArray[i];\n\n            emit ContentConfigUpdated(contentIds[i]);\n        }\n    }\n\n    /**\n     * @dev Check if content is active\n     * @param contentId Content ID\n     * @return Whether content is active\n     */\n    function isContentActive(uint256 contentId) external view returns (bool) {\n        return _storage.contentConfigs[contentId].isActive;\n    }\n\n    // ============ Price Management Functions ============\n\n    /**\n     * @dev Update token price for content\n     * @param contentId Content ID\n     * @param token Token address\n     * @param price New price\n     */\n    function updateTokenPrice(\n        uint256 contentId,\n        address token,\n        uint256 price\n    ) external onlyAdmin {\n        if (token == address(0)) revert ZeroAddress();\n        _storage.contentConfigs[contentId].tokenPrices[token] = price;\n        emit TokenPriceUpdated(contentId, token, price);\n    }\n\n    /**\n     * @dev Batch update token prices for multiple contents\n     * @param contentIds Content ID array\n     * @param token Token address\n     * @param prices Price array\n     */\n    function batchUpdateTokenPrice(\n        uint256[] memory contentIds,\n        address token,\n        uint256[] memory prices\n    ) external onlyAdmin {\n        if (contentIds.length != prices.length) revert ArrayLengthMismatch();\n        if (token == address(0)) revert ZeroAddress();\n\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            _storage.contentConfigs[contentIds[i]].tokenPrices[token] = prices[\n                i\n            ];\n            emit TokenPriceUpdated(contentIds[i], token, prices[i]);\n        }\n    }\n\n    /**\n     * @dev Update native coin price for content\n     * @param contentId Content ID\n     * @param price New price\n     */\n    function updateNativePrice(\n        uint256 contentId,\n        uint256 price\n    ) external onlyAdmin {\n        _storage.contentConfigs[contentId].nativePrice = price;\n        emit NativePriceUpdated(contentId, price);\n    }\n\n    /**\n     * @dev Batch update native coin prices for multiple contents\n     * @param contentIds Content ID array\n     * @param prices Price array\n     */\n    function batchUpdateNativePrice(\n        uint256[] memory contentIds,\n        uint256[] memory prices\n    ) external onlyAdmin {\n        if (contentIds.length != prices.length) revert ArrayLengthMismatch();\n\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            _storage.contentConfigs[contentIds[i]].nativePrice = prices[i];\n            emit NativePriceUpdated(contentIds[i], prices[i]);\n        }\n    }\n\n    // ============ Payment Token Management Functions ============\n\n    /**\n     * @dev Add supported token\n     * @param token Token address to add\n     */\n    function addSupportedToken(address token) external onlyAdmin {\n        if (token == address(0)) revert ZeroAddress();\n        _storage.supportedTokens[token] = true;\n        emit SupportedTokenAdded(token);\n    }\n\n    /**\n     * @dev Remove supported token\n     * @param token Token address to remove\n     */\n    function removeSupportedToken(address token) external onlyAdmin {\n        if (token == address(0)) revert ZeroAddress();\n        _storage.supportedTokens[token] = false;\n        emit SupportedTokenRemoved(token);\n    }\n\n    /**\n     * @dev Check if token is supported\n     * @param token Token address to check\n     * @return Whether token is supported\n     */\n    function isSupportedToken(address token) external view returns (bool) {\n        return _storage.supportedTokens[token];\n    }\n\n    // ============ Purchase Functions ============\n\n    /**\n     * @dev Purchase content with ERC20 token\n     * @param contentId Content ID\n     * @param paymentToken Payment token address\n     * @param amount Payment amount\n     */\n    function purchaseContent(\n        uint256 contentId,\n        address paymentToken,\n        uint256 amount\n    ) external nonReentrant whenNotPaused validContent(contentId) {\n        if (!_storage.supportedTokens[paymentToken]) revert UnsupportedToken();\n        if (\n            _storage.contentConfigs[contentId].tokenPrices[paymentToken] !=\n            amount\n        ) revert InsufficientPayment();\n\n        // Transfer payment\n        IERC20(paymentToken).transferFrom(msg.sender, address(this), amount);\n\n        // Create view permission\n        _createViewPermission(msg.sender, contentId);\n\n        // Emit event\n        uint256 validUntil = block.timestamp +\n            _storage.contentConfigs[contentId].viewDuration;\n        emit ContentPurchased(\n            msg.sender,\n            contentId,\n            paymentToken,\n            amount,\n            _storage.contentConfigs[contentId].defaultViewCount,\n            validUntil\n        );\n    }\n\n    /**\n     * @dev Purchase content with native coin\n     * @param contentId Content ID\n     */\n    function purchaseWithNative(\n        uint256 contentId\n    ) external payable nonReentrant whenNotPaused validContent(contentId) {\n        if (msg.value != _storage.contentConfigs[contentId].nativePrice)\n            revert InsufficientPayment();\n\n        // Create view permission\n        _createViewPermission(msg.sender, contentId);\n\n        // Emit event\n        uint256 validUntil = block.timestamp +\n            _storage.contentConfigs[contentId].viewDuration;\n        emit NativePurchased(\n            msg.sender,\n            contentId,\n            msg.value,\n            _storage.contentConfigs[contentId].defaultViewCount,\n            validUntil\n        );\n    }\n\n    /**\n     * @dev Batch purchase content with ERC20 token\n     * @param contentIds Content ID array\n     * @param paymentToken Payment token address\n     * @param totalAmount Total payment amount\n     */\n    function batchPurchase(\n        uint256[] memory contentIds,\n        address paymentToken,\n        uint256 totalAmount\n    ) external nonReentrant whenNotPaused {\n        if (!_storage.supportedTokens[paymentToken]) revert UnsupportedToken();\n\n        uint256 expectedTotal = 0;\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            if (!_storage.contentConfigs[contentIds[i]].isActive)\n                revert InvalidContent();\n            expectedTotal += _storage.contentConfigs[contentIds[i]].tokenPrices[\n                paymentToken\n            ];\n        }\n\n        if (totalAmount != expectedTotal) revert InsufficientPayment();\n\n        // Transfer payment\n        IERC20(paymentToken).transferFrom(\n            msg.sender,\n            address(this),\n            totalAmount\n        );\n\n        // Create view permissions\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            _createViewPermission(msg.sender, contentIds[i]);\n        }\n\n        // Emit event\n        emit BatchPurchased(msg.sender, contentIds, paymentToken, totalAmount);\n    }\n\n    /**\n     * @dev Batch purchase content with native coin\n     * @param contentIds Content ID array\n     */\n    function batchPurchaseWithNative(\n        uint256[] memory contentIds\n    ) external payable nonReentrant whenNotPaused {\n        uint256 expectedTotal = 0;\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            if (!_storage.contentConfigs[contentIds[i]].isActive)\n                revert InvalidContent();\n            expectedTotal += _storage.contentConfigs[contentIds[i]].nativePrice;\n        }\n\n        if (msg.value != expectedTotal) revert InsufficientPayment();\n\n        // Create view permissions\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            _createViewPermission(msg.sender, contentIds[i]);\n        }\n\n        // Emit event\n        emit BatchNativePurchased(msg.sender, contentIds, msg.value);\n    }\n\n    /**\n     * @dev Purchase content with NFT\n     * @param contentId Content ID\n     * @param nftContract NFT contract address\n     * @param tokenId NFT token ID\n     */\n    function purchaseWithNFT(\n        uint256 contentId,\n        address nftContract,\n        uint256 tokenId\n    ) external nonReentrant whenNotPaused validContent(contentId) {\n        // Check NFT ownership\n        if (IERC721(nftContract).ownerOf(tokenId) != msg.sender)\n            revert NoValidPermission();\n\n        // Transfer NFT (burn it by transferring to this contract)\n        IERC721(nftContract).transferFrom(msg.sender, address(this), tokenId);\n\n        // Create view permission\n        _createViewPermission(msg.sender, contentId);\n\n        // Emit event\n        emit NFTPurchased(msg.sender, contentId, nftContract, tokenId);\n    }\n\n    /**\n     * @dev Internal function to create view permission\n     * @param user User address\n     * @param contentId Content ID\n     */\n    function _createViewPermission(address user, uint256 contentId) internal {\n        _storage.userPermissions[user][contentId] = VideoPaymentStorage\n            .ViewPermission({\n                purchaseTime: block.timestamp,\n                remainingViews: _storage\n                    .contentConfigs[contentId]\n                    .defaultViewCount,\n                isValid: true\n            });\n    }\n\n    // ============ Permission Verification Functions ============\n\n    /**\n     * @dev Check if user has valid view permission\n     * @param user User address\n     * @param contentId Content ID\n     * @return Whether user has valid permission\n     */\n    function hasViewPermission(\n        address user,\n        uint256 contentId\n    ) external view returns (bool) {\n        VideoPaymentStorage.ViewPermission memory permission = _storage\n            .userPermissions[user][contentId];\n\n        if (!permission.isValid || permission.remainingViews == 0) {\n            return false;\n        }\n\n        // Check if permission has expired\n        if (\n            block.timestamp >\n            permission.purchaseTime +\n                _storage.contentConfigs[contentId].viewDuration\n        ) {\n            return false;\n        }\n\n        return true;\n    }\n\n    /**\n     * @dev Get user permissions for multiple contents\n     * @param user User address\n     * @param contentIds Content ID array\n     * @return Permission array\n     */\n    function getUserPermissions(\n        address user,\n        uint256[] memory contentIds\n    ) external view returns (VideoPaymentStorage.ViewPermission[] memory) {\n        VideoPaymentStorage.ViewPermission[]\n            memory permissions = new VideoPaymentStorage.ViewPermission[](\n                contentIds.length\n            );\n\n        for (uint256 i = 0; i < contentIds.length; i++) {\n            permissions[i] = _storage.userPermissions[user][contentIds[i]];\n        }\n\n        return permissions;\n    }\n\n    /**\n     * @dev Get detailed permission info\n     * @param user User address\n     * @param contentId Content ID\n     * @return Permission details\n     */\n    function getPermissionDetails(\n        address user,\n        uint256 contentId\n    ) external view returns (VideoPaymentStorage.ViewPermission memory) {\n        return _storage.userPermissions[user][contentId];\n    }\n\n    /**\n     * @dev Consume one view for user\n     * @param user User address\n     * @param contentId Content ID\n     * @return Success status\n     */\n    function consumeView(\n        address user,\n        uint256 contentId\n    ) external onlyAdmin returns (bool) {\n        VideoPaymentStorage.ViewPermission storage permission = _storage\n            .userPermissions[user][contentId];\n\n        if (!permission.isValid || permission.remainingViews == 0) {\n            revert NoValidPermission();\n        }\n\n        // Check if permission has expired\n        if (\n            block.timestamp >\n            permission.purchaseTime +\n                _storage.contentConfigs[contentId].viewDuration\n        ) {\n            revert NoValidPermission();\n        }\n\n        // Consume one view\n        permission.remainingViews--;\n\n        emit ViewConsumed(user, contentId, permission.remainingViews);\n\n        // Mark as invalid if no views remaining\n        if (permission.remainingViews == 0) {\n            permission.isValid = false;\n            emit PermissionExpired(user, contentId);\n        }\n\n        return true;\n    }\n\n    /**\n     * @dev Batch consume views for multiple users\n     * @param users User address array\n     * @param contentIds Content ID array\n     * @return Success status array\n     */\n    function batchConsumeView(\n        address[] memory users,\n        uint256[] memory contentIds\n    ) external onlyAdmin returns (bool[] memory) {\n        if (users.length != contentIds.length) revert ArrayLengthMismatch();\n\n        bool[] memory results = new bool[](users.length);\n\n        for (uint256 i = 0; i < users.length; i++) {\n            VideoPaymentStorage.ViewPermission storage permission = _storage\n                .userPermissions[users[i]][contentIds[i]];\n\n            if (!permission.isValid || permission.remainingViews == 0) {\n                results[i] = false;\n                continue;\n            }\n\n            // Check if permission has expired\n            if (\n                block.timestamp >\n                permission.purchaseTime +\n                    _storage.contentConfigs[contentIds[i]].viewDuration\n            ) {\n                results[i] = false;\n                continue;\n            }\n\n            // Consume one view\n            permission.remainingViews--;\n            emit ViewConsumed(\n                users[i],\n                contentIds[i],\n                permission.remainingViews\n            );\n\n            // Mark as invalid if no views remaining\n            if (permission.remainingViews == 0) {\n                permission.isValid = false;\n                emit PermissionExpired(users[i], contentIds[i]);\n            }\n\n            results[i] = true;\n        }\n\n        return results;\n    }\n\n    // ============ Emergency Control Functions ============\n\n    /**\n     * @dev Pause contract\n     */\n    function pause() external onlyOwner {\n        _storage.paused = true;\n        emit Paused();\n    }\n\n    /**\n     * @dev Unpause contract\n     */\n    function unpause() external onlyOwner {\n        _storage.paused = false;\n        emit Unpaused();\n    }\n}\n"},"contracts/VideoPaymentProxy.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\n\nimport \"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\";\n\n/**\n * @title VideoPaymentProxy\n * @dev Transparent upgradeable proxy for VideoPayment contract\n */\ncontract VideoPaymentProxy is TransparentUpgradeableProxy {\n    /**\n     * @dev Initialize the proxy\n     * @param logic Address of the logic contract\n     * @param admin Address of the proxy admin\n     * @param data Initialization data\n     */\n    constructor(\n        address logic,\n        address admin,\n        bytes memory data\n    ) TransparentUpgradeableProxy(logic, admin, data) {}\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"Initializable":[267]},"id":268,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:0"},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"139:2209:0","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":267,"linearizedBaseContracts":[267],"name":"Initializable","nameLocation":"2367:13:0","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Initializable.InitializableStorage","documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"2387:293:0","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":10,"members":[{"constant":false,"id":6,"mutability":"mutable","name":"_initialized","nameLocation":"2820:12:0","nodeType":"VariableDeclaration","scope":10,"src":"2813:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5,"name":"uint64","nodeType":"ElementaryTypeName","src":"2813:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"_initializing","nameLocation":"2955:13:0","nodeType":"VariableDeclaration","scope":10,"src":"2950:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8,"name":"bool","nodeType":"ElementaryTypeName","src":"2950:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"InitializableStorage","nameLocation":"2692:20:0","nodeType":"StructDefinition","scope":267,"src":"2685:290:0","visibility":"public"},{"constant":true,"id":13,"mutability":"constant","name":"INITIALIZABLE_STORAGE","nameLocation":"3123:21:0","nodeType":"VariableDeclaration","scope":267,"src":"3098:115:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3098:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030","id":12,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3147:66:0","typeDescriptions":{"typeIdentifier":"t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1","typeString":"int_const 1089...(70 digits omitted)...9600"},"value":"0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00"},"visibility":"private"},{"documentation":{"id":14,"nodeType":"StructuredDocumentation","src":"3220:60:0","text":" @dev The contract is already initialized."},"errorSelector":"f92ee8a9","id":16,"name":"InvalidInitialization","nameLocation":"3291:21:0","nodeType":"ErrorDefinition","parameters":{"id":15,"nodeType":"ParameterList","parameters":[],"src":"3312:2:0"},"src":"3285:30:0"},{"documentation":{"id":17,"nodeType":"StructuredDocumentation","src":"3321:57:0","text":" @dev The contract is not initializing."},"errorSelector":"d7e6bcf8","id":19,"name":"NotInitializing","nameLocation":"3389:15:0","nodeType":"ErrorDefinition","parameters":{"id":18,"nodeType":"ParameterList","parameters":[],"src":"3404:2:0"},"src":"3383:24:0"},{"anonymous":false,"documentation":{"id":20,"nodeType":"StructuredDocumentation","src":"3413:90:0","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2","id":24,"name":"Initialized","nameLocation":"3514:11:0","nodeType":"EventDefinition","parameters":{"id":23,"nodeType":"ParameterList","parameters":[{"constant":false,"id":22,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"3533:7:0","nodeType":"VariableDeclaration","scope":24,"src":"3526:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":21,"name":"uint64","nodeType":"ElementaryTypeName","src":"3526:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3525:16:0"},"src":"3508:34:0"},{"body":{"id":106,"nodeType":"Block","src":"4092:1079:0","statements":[{"assignments":[29],"declarations":[{"constant":false,"id":29,"mutability":"mutable","name":"$","nameLocation":"4187:1:0","nodeType":"VariableDeclaration","scope":106,"src":"4158:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":28,"nodeType":"UserDefinedTypeName","pathNode":{"id":27,"name":"InitializableStorage","nameLocations":["4158:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":10,"src":"4158:20:0"},"referencedDeclaration":10,"src":"4158:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":32,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":30,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"4191:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":31,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4191:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4158:59:0"},{"assignments":[34],"declarations":[{"constant":false,"id":34,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"4284:14:0","nodeType":"VariableDeclaration","scope":106,"src":"4279:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":33,"name":"bool","nodeType":"ElementaryTypeName","src":"4279:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":38,"initialValue":{"id":37,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4301:16:0","subExpression":{"expression":{"id":35,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"4302:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":36,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4304:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"4302:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4279:38:0"},{"assignments":[40],"declarations":[{"constant":false,"id":40,"mutability":"mutable","name":"initialized","nameLocation":"4334:11:0","nodeType":"VariableDeclaration","scope":106,"src":"4327:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":39,"name":"uint64","nodeType":"ElementaryTypeName","src":"4327:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"id":43,"initialValue":{"expression":{"id":41,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"4348:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":42,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4350:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"4348:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"VariableDeclarationStatement","src":"4327:35:0"},{"assignments":[45],"declarations":[{"constant":false,"id":45,"mutability":"mutable","name":"initialSetup","nameLocation":"4709:12:0","nodeType":"VariableDeclaration","scope":106,"src":"4704:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":44,"name":"bool","nodeType":"ElementaryTypeName","src":"4704:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":51,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":50,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":48,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":46,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"4724:11:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":47,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4739:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4724:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":49,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"4744:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4724:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4704:54:0"},{"assignments":[53],"declarations":[{"constant":false,"id":53,"mutability":"mutable","name":"construction","nameLocation":"4773:12:0","nodeType":"VariableDeclaration","scope":106,"src":"4768:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52,"name":"bool","nodeType":"ElementaryTypeName","src":"4768:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":66,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":56,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54,"name":"initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"4788:11:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":55,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4803:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4788:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":64,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"arguments":[{"id":59,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4816:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$267","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$267","typeString":"contract Initializable"}],"id":58,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4808:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":57,"name":"address","nodeType":"ElementaryTypeName","src":"4808:7:0","typeDescriptions":{}}},"id":60,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4808:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":61,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4822:4:0","memberName":"code","nodeType":"MemberAccess","src":"4808:18:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":62,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4827:6:0","memberName":"length","nodeType":"MemberAccess","src":"4808:25:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":63,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4837:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4808:30:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4788:50:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4768:70:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":71,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":68,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4853:13:0","subExpression":{"id":67,"name":"initialSetup","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"4854:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":70,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4870:13:0","subExpression":{"id":69,"name":"construction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53,"src":"4871:12:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4853:30:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":76,"nodeType":"IfStatement","src":"4849:91:0","trueBody":{"id":75,"nodeType":"Block","src":"4885:55:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":72,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"4906:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":73,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4906:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":74,"nodeType":"RevertStatement","src":"4899:30:0"}]}},{"expression":{"id":81,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":77,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"4949:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":79,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4951:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"4949:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":80,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4949:18:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":82,"nodeType":"ExpressionStatement","src":"4949:18:0"},{"condition":{"id":83,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"4981:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":91,"nodeType":"IfStatement","src":"4977:67:0","trueBody":{"id":90,"nodeType":"Block","src":"4997:47:0","statements":[{"expression":{"id":88,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":84,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5011:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":86,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5013:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"5011:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":87,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5029:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5011:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":89,"nodeType":"ExpressionStatement","src":"5011:22:0"}]}},{"id":92,"nodeType":"PlaceholderStatement","src":"5053:1:0"},{"condition":{"id":93,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34,"src":"5068:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":105,"nodeType":"IfStatement","src":"5064:101:0","trueBody":{"id":104,"nodeType":"Block","src":"5084:81:0","statements":[{"expression":{"id":98,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":94,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":29,"src":"5098:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":96,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5100:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"5098:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":97,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5116:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5098:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":99,"nodeType":"ExpressionStatement","src":"5098:23:0"},{"eventCall":{"arguments":[{"hexValue":"31","id":101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5152:1:0","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":100,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"5140:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5140:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":103,"nodeType":"EmitStatement","src":"5135:19:0"}]}}]},"documentation":{"id":25,"nodeType":"StructuredDocumentation","src":"3548:516:0","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":107,"name":"initializer","nameLocation":"4078:11:0","nodeType":"ModifierDefinition","parameters":{"id":26,"nodeType":"ParameterList","parameters":[],"src":"4089:2:0"},"src":"4069:1102:0","virtual":false,"visibility":"internal"},{"body":{"id":153,"nodeType":"Block","src":"6289:392:0","statements":[{"assignments":[114],"declarations":[{"constant":false,"id":114,"mutability":"mutable","name":"$","nameLocation":"6384:1:0","nodeType":"VariableDeclaration","scope":153,"src":"6355:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":113,"nodeType":"UserDefinedTypeName","pathNode":{"id":112,"name":"InitializableStorage","nameLocations":["6355:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":10,"src":"6355:20:0"},"referencedDeclaration":10,"src":"6355:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":117,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":115,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"6388:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6388:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6355:59:0"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":118,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"6429:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":119,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6431:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"6429:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"6448:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6450:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"6448:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":122,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"6466:7:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6448:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6429:44:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":129,"nodeType":"IfStatement","src":"6425:105:0","trueBody":{"id":128,"nodeType":"Block","src":"6475:55:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":125,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"6496:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6496:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":127,"nodeType":"RevertStatement","src":"6489:30:0"}]}},{"expression":{"id":134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":130,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"6539:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6541:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"6539:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":133,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"6556:7:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6539:24:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":135,"nodeType":"ExpressionStatement","src":"6539:24:0"},{"expression":{"id":140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":136,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"6573:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6575:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"6573:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6591:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"6573:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":141,"nodeType":"ExpressionStatement","src":"6573:22:0"},{"id":142,"nodeType":"PlaceholderStatement","src":"6605:1:0"},{"expression":{"id":147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":143,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114,"src":"6616:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6618:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"6616:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6634:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6616:23:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":148,"nodeType":"ExpressionStatement","src":"6616:23:0"},{"eventCall":{"arguments":[{"id":150,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110,"src":"6666:7:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":149,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"6654:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6654:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":152,"nodeType":"EmitStatement","src":"6649:25:0"}]},"documentation":{"id":108,"nodeType":"StructuredDocumentation","src":"5177:1068:0","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":154,"name":"reinitializer","nameLocation":"6259:13:0","nodeType":"ModifierDefinition","parameters":{"id":111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":110,"mutability":"mutable","name":"version","nameLocation":"6280:7:0","nodeType":"VariableDeclaration","scope":154,"src":"6273:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":109,"name":"uint64","nodeType":"ElementaryTypeName","src":"6273:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6272:16:0"},"src":"6250:431:0","virtual":false,"visibility":"internal"},{"body":{"id":161,"nodeType":"Block","src":"6919:48:0","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":157,"name":"_checkInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"6929:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6929:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":159,"nodeType":"ExpressionStatement","src":"6929:20:0"},{"id":160,"nodeType":"PlaceholderStatement","src":"6959:1:0"}]},"documentation":{"id":155,"nodeType":"StructuredDocumentation","src":"6687:199:0","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":162,"name":"onlyInitializing","nameLocation":"6900:16:0","nodeType":"ModifierDefinition","parameters":{"id":156,"nodeType":"ParameterList","parameters":[],"src":"6916:2:0"},"src":"6891:76:0","virtual":false,"visibility":"internal"},{"body":{"id":174,"nodeType":"Block","src":"7134:89:0","statements":[{"condition":{"id":168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7148:18:0","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":166,"name":"_isInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"7149:15:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7149:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":173,"nodeType":"IfStatement","src":"7144:73:0","trueBody":{"id":172,"nodeType":"Block","src":"7168:49:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":169,"name":"NotInitializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"7189:15:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7189:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":171,"nodeType":"RevertStatement","src":"7182:24:0"}]}}]},"documentation":{"id":163,"nodeType":"StructuredDocumentation","src":"6973:104:0","text":" @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}."},"id":175,"implemented":true,"kind":"function","modifiers":[],"name":"_checkInitializing","nameLocation":"7091:18:0","nodeType":"FunctionDefinition","parameters":{"id":164,"nodeType":"ParameterList","parameters":[],"src":"7109:2:0"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[],"src":"7134:0:0"},"scope":267,"src":"7082:141:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":220,"nodeType":"Block","src":"7758:373:0","statements":[{"assignments":[181],"declarations":[{"constant":false,"id":181,"mutability":"mutable","name":"$","nameLocation":"7853:1:0","nodeType":"VariableDeclaration","scope":220,"src":"7824:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":180,"nodeType":"UserDefinedTypeName","pathNode":{"id":179,"name":"InitializableStorage","nameLocations":["7824:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":10,"src":"7824:20:0"},"referencedDeclaration":10,"src":"7824:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"id":184,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":182,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"7857:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7857:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7824:59:0"},{"condition":{"expression":{"id":185,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":181,"src":"7898:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":186,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7900:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"7898:15:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":191,"nodeType":"IfStatement","src":"7894:76:0","trueBody":{"id":190,"nodeType":"Block","src":"7915:55:0","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":187,"name":"InvalidInitialization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16,"src":"7936:21:0","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7936:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":189,"nodeType":"RevertStatement","src":"7929:30:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint64","typeString":"uint64"},"id":199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":192,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":181,"src":"7983:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7985:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"7983:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8006:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":195,"name":"uint64","nodeType":"ElementaryTypeName","src":"8006:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":194,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8001:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8001:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8014:3:0","memberName":"max","nodeType":"MemberAccess","src":"8001:16:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"7983:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":219,"nodeType":"IfStatement","src":"7979:146:0","trueBody":{"id":218,"nodeType":"Block","src":"8019:106:0","statements":[{"expression":{"id":208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":200,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":181,"src":"8033:1:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":202,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8035:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"8033:14:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8055:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":204,"name":"uint64","nodeType":"ElementaryTypeName","src":"8055:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":203,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8050:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8050:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8063:3:0","memberName":"max","nodeType":"MemberAccess","src":"8050:16:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"8033:33:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":209,"nodeType":"ExpressionStatement","src":"8033:33:0"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":213,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8102:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":212,"name":"uint64","nodeType":"ElementaryTypeName","src":"8102:6:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":211,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8097:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8097:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8110:3:0","memberName":"max","nodeType":"MemberAccess","src":"8097:16:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":210,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"8085:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":216,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8085:29:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":217,"nodeType":"EmitStatement","src":"8080:34:0"}]}}]},"documentation":{"id":176,"nodeType":"StructuredDocumentation","src":"7229:475:0","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":221,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"7718:20:0","nodeType":"FunctionDefinition","parameters":{"id":177,"nodeType":"ParameterList","parameters":[],"src":"7738:2:0"},"returnParameters":{"id":178,"nodeType":"ParameterList","parameters":[],"src":"7758:0:0"},"scope":267,"src":"7709:422:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":231,"nodeType":"Block","src":"8306:63:0","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":227,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"8323:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8323:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8350:12:0","memberName":"_initialized","nodeType":"MemberAccess","referencedDeclaration":6,"src":"8323:39:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":226,"id":230,"nodeType":"Return","src":"8316:46:0"}]},"documentation":{"id":222,"nodeType":"StructuredDocumentation","src":"8137:99:0","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":232,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"8250:22:0","nodeType":"FunctionDefinition","parameters":{"id":223,"nodeType":"ParameterList","parameters":[],"src":"8272:2:0"},"returnParameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":232,"src":"8298:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":224,"name":"uint64","nodeType":"ElementaryTypeName","src":"8298:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"8297:8:0"},"scope":267,"src":"8241:128:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":242,"nodeType":"Block","src":"8541:64:0","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":238,"name":"_getInitializableStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":266,"src":"8558:24:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$10_storage_ptr_$","typeString":"function () pure returns (struct Initializable.InitializableStorage storage pointer)"}},"id":239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8558:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage storage pointer"}},"id":240,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8585:13:0","memberName":"_initializing","nodeType":"MemberAccess","referencedDeclaration":9,"src":"8558:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":237,"id":241,"nodeType":"Return","src":"8551:47:0"}]},"documentation":{"id":233,"nodeType":"StructuredDocumentation","src":"8375:105:0","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":243,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"8494:15:0","nodeType":"FunctionDefinition","parameters":{"id":234,"nodeType":"ParameterList","parameters":[],"src":"8509:2:0"},"returnParameters":{"id":237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":236,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":243,"src":"8535:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":235,"name":"bool","nodeType":"ElementaryTypeName","src":"8535:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8534:6:0"},"scope":267,"src":"8485:120:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":251,"nodeType":"Block","src":"8896:45:0","statements":[{"expression":{"id":249,"name":"INITIALIZABLE_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"8913:21:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":248,"id":250,"nodeType":"Return","src":"8906:28:0"}]},"documentation":{"id":244,"nodeType":"StructuredDocumentation","src":"8611:203:0","text":" @dev Pointer to storage slot. Allows integrators to override it with a custom storage location.\n NOTE: Consider following the ERC-7201 formula to derive storage locations."},"id":252,"implemented":true,"kind":"function","modifiers":[],"name":"_initializableStorageSlot","nameLocation":"8828:25:0","nodeType":"FunctionDefinition","parameters":{"id":245,"nodeType":"ParameterList","parameters":[],"src":"8853:2:0"},"returnParameters":{"id":248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":252,"src":"8887:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":246,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8887:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8886:9:0"},"scope":267,"src":"8819:122:0","stateMutability":"pure","virtual":true,"visibility":"internal"},{"body":{"id":265,"nodeType":"Block","src":"9161:115:0","statements":[{"assignments":[260],"declarations":[{"constant":false,"id":260,"mutability":"mutable","name":"slot","nameLocation":"9179:4:0","nodeType":"VariableDeclaration","scope":265,"src":"9171:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":259,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9171:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":263,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":261,"name":"_initializableStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"9186:25:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_bytes32_$","typeString":"function () pure returns (bytes32)"}},"id":262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9186:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9171:42:0"},{"AST":{"nativeSrc":"9232:38:0","nodeType":"YulBlock","src":"9232:38:0","statements":[{"nativeSrc":"9246:14:0","nodeType":"YulAssignment","src":"9246:14:0","value":{"name":"slot","nativeSrc":"9256:4:0","nodeType":"YulIdentifier","src":"9256:4:0"},"variableNames":[{"name":"$.slot","nativeSrc":"9246:6:0","nodeType":"YulIdentifier","src":"9246:6:0"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":257,"isOffset":false,"isSlot":true,"src":"9246:6:0","suffix":"slot","valueSize":1},{"declaration":260,"isOffset":false,"isSlot":false,"src":"9256:4:0","valueSize":1}],"id":264,"nodeType":"InlineAssembly","src":"9223:47:0"}]},"documentation":{"id":253,"nodeType":"StructuredDocumentation","src":"8947:67:0","text":" @dev Returns a pointer to the storage namespace."},"id":266,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializableStorage","nameLocation":"9080:24:0","nodeType":"FunctionDefinition","parameters":{"id":254,"nodeType":"ParameterList","parameters":[],"src":"9104:2:0"},"returnParameters":{"id":258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":257,"mutability":"mutable","name":"$","nameLocation":"9158:1:0","nodeType":"VariableDeclaration","scope":266,"src":"9129:30:0","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"},"typeName":{"id":256,"nodeType":"UserDefinedTypeName","pathNode":{"id":255,"name":"InitializableStorage","nameLocations":["9129:20:0"],"nodeType":"IdentifierPath","referencedDeclaration":10,"src":"9129:20:0"},"referencedDeclaration":10,"src":"9129:20:0","typeDescriptions":{"typeIdentifier":"t_struct$_InitializableStorage_$10_storage_ptr","typeString":"struct Initializable.InitializableStorage"}},"visibility":"internal"}],"src":"9128:32:0"},"scope":267,"src":"9071:205:0","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":268,"src":"2349:6929:0","usedErrors":[16,19],"usedEvents":[24]}],"src":"113:9166:0"},"id":0},"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","exportedSymbols":{"ERC1967Utils":[1089],"IERC1822Proxiable":[757],"Initializable":[267],"UUPSUpgradeable":[449]},"id":450,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":269,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"115:24:1"},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","file":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","id":271,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":450,"sourceUnit":758,"src":"141:88:1","symbolAliases":[{"foreign":{"id":270,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"149:17:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","id":273,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":450,"sourceUnit":1090,"src":"230:84:1","symbolAliases":[{"foreign":{"id":272,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"238:12:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"./Initializable.sol","id":275,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":450,"sourceUnit":268,"src":"315:50:1","symbolAliases":[{"foreign":{"id":274,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":267,"src":"323:13:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":277,"name":"Initializable","nameLocations":["1023:13:1"],"nodeType":"IdentifierPath","referencedDeclaration":267,"src":"1023:13:1"},"id":278,"nodeType":"InheritanceSpecifier","src":"1023:13:1"},{"baseName":{"id":279,"name":"IERC1822Proxiable","nameLocations":["1038:17:1"],"nodeType":"IdentifierPath","referencedDeclaration":757,"src":"1038:17:1"},"id":280,"nodeType":"InheritanceSpecifier","src":"1038:17:1"}],"canonicalName":"UUPSUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":276,"nodeType":"StructuredDocumentation","src":"367:618:1","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":449,"linearizedBaseContracts":[449,757,267],"name":"UUPSUpgradeable","nameLocation":"1004:15:1","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":281,"nodeType":"StructuredDocumentation","src":"1062:61:1","text":"@custom:oz-upgrades-unsafe-allow state-variable-immutable"},"id":287,"mutability":"immutable","name":"__self","nameLocation":"1154:6:1","nodeType":"VariableDeclaration","scope":449,"src":"1128:48:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":282,"name":"address","nodeType":"ElementaryTypeName","src":"1128:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"id":285,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1171:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}],"id":284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1163:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":283,"name":"address","nodeType":"ElementaryTypeName","src":"1163:7:1","typeDescriptions":{}}},"id":286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1163:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"documentation":{"id":288,"nodeType":"StructuredDocumentation","src":"1183:631:1","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":291,"mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1842:25:1","nodeType":"VariableDeclaration","scope":449,"src":"1819:58:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":289,"name":"string","nodeType":"ElementaryTypeName","src":"1819:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1870:7:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"documentation":{"id":292,"nodeType":"StructuredDocumentation","src":"1884:65:1","text":" @dev The call is from an unauthorized context."},"errorSelector":"e07c8dba","id":294,"name":"UUPSUnauthorizedCallContext","nameLocation":"1960:27:1","nodeType":"ErrorDefinition","parameters":{"id":293,"nodeType":"ParameterList","parameters":[],"src":"1987:2:1"},"src":"1954:36:1"},{"documentation":{"id":295,"nodeType":"StructuredDocumentation","src":"1996:68:1","text":" @dev The storage `slot` is unsupported as a UUID."},"errorSelector":"aa1d49a4","id":299,"name":"UUPSUnsupportedProxiableUUID","nameLocation":"2075:28:1","nodeType":"ErrorDefinition","parameters":{"id":298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":297,"mutability":"mutable","name":"slot","nameLocation":"2112:4:1","nodeType":"VariableDeclaration","scope":299,"src":"2104:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":296,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2104:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2103:14:1"},"src":"2069:49:1"},{"body":{"id":306,"nodeType":"Block","src":"2645:41:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":302,"name":"_checkProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":381,"src":"2655:11:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2655:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":304,"nodeType":"ExpressionStatement","src":"2655:13:1"},{"id":305,"nodeType":"PlaceholderStatement","src":"2678:1:1"}]},"documentation":{"id":300,"nodeType":"StructuredDocumentation","src":"2124:495:1","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 ERC-1967) 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 ERC-1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail."},"id":307,"name":"onlyProxy","nameLocation":"2633:9:1","nodeType":"ModifierDefinition","parameters":{"id":301,"nodeType":"ParameterList","parameters":[],"src":"2642:2:1"},"src":"2624:62:1","virtual":false,"visibility":"internal"},{"body":{"id":314,"nodeType":"Block","src":"2916:48:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":310,"name":"_checkNotDelegated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":397,"src":"2926:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2926:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":312,"nodeType":"ExpressionStatement","src":"2926:20:1"},{"id":313,"nodeType":"PlaceholderStatement","src":"2956:1:1"}]},"documentation":{"id":308,"nodeType":"StructuredDocumentation","src":"2692:195:1","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":315,"name":"notDelegated","nameLocation":"2901:12:1","nodeType":"ModifierDefinition","parameters":{"id":309,"nodeType":"ParameterList","parameters":[],"src":"2913:2:1"},"src":"2892:72:1","virtual":false,"visibility":"internal"},{"body":{"id":320,"nodeType":"Block","src":"3030:7:1","statements":[]},"id":321,"implemented":true,"kind":"function","modifiers":[{"id":318,"kind":"modifierInvocation","modifierName":{"id":317,"name":"onlyInitializing","nameLocations":["3013:16:1"],"nodeType":"IdentifierPath","referencedDeclaration":162,"src":"3013:16:1"},"nodeType":"ModifierInvocation","src":"3013:16:1"}],"name":"__UUPSUpgradeable_init","nameLocation":"2979:22:1","nodeType":"FunctionDefinition","parameters":{"id":316,"nodeType":"ParameterList","parameters":[],"src":"3001:2:1"},"returnParameters":{"id":319,"nodeType":"ParameterList","parameters":[],"src":"3030:0:1"},"scope":449,"src":"2970:67:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":326,"nodeType":"Block","src":"3113:7:1","statements":[]},"id":327,"implemented":true,"kind":"function","modifiers":[{"id":324,"kind":"modifierInvocation","modifierName":{"id":323,"name":"onlyInitializing","nameLocations":["3096:16:1"],"nodeType":"IdentifierPath","referencedDeclaration":162,"src":"3096:16:1"},"nodeType":"ModifierInvocation","src":"3096:16:1"}],"name":"__UUPSUpgradeable_init_unchained","nameLocation":"3052:32:1","nodeType":"FunctionDefinition","parameters":{"id":322,"nodeType":"ParameterList","parameters":[],"src":"3084:2:1"},"returnParameters":{"id":325,"nodeType":"ParameterList","parameters":[],"src":"3113:0:1"},"scope":449,"src":"3043:77:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[756],"body":{"id":338,"nodeType":"Block","src":"3786:56:1","statements":[{"expression":{"expression":{"id":335,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"3803:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1089_$","typeString":"type(library ERC1967Utils)"}},"id":336,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3816:19:1","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":810,"src":"3803:32:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":334,"id":337,"nodeType":"Return","src":"3796:39:1"}]},"documentation":{"id":328,"nodeType":"StructuredDocumentation","src":"3125:578:1","text":" @dev Implementation of the ERC-1822 {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":339,"implemented":true,"kind":"function","modifiers":[{"id":331,"kind":"modifierInvocation","modifierName":{"id":330,"name":"notDelegated","nameLocations":["3755:12:1"],"nodeType":"IdentifierPath","referencedDeclaration":315,"src":"3755:12:1"},"nodeType":"ModifierInvocation","src":"3755:12:1"}],"name":"proxiableUUID","nameLocation":"3717:13:1","nodeType":"FunctionDefinition","parameters":{"id":329,"nodeType":"ParameterList","parameters":[],"src":"3730:2:1"},"returnParameters":{"id":334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":339,"src":"3777:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":332,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3777:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3776:9:1"},"scope":449,"src":"3708:134:1","stateMutability":"view","virtual":true,"visibility":"external"},{"body":{"id":358,"nodeType":"Block","src":"4266:109:1","statements":[{"expression":{"arguments":[{"id":350,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"4294:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":349,"name":"_authorizeUpgrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":403,"src":"4276:17:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4276:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":352,"nodeType":"ExpressionStatement","src":"4276:36:1"},{"expression":{"arguments":[{"id":354,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"4344:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":355,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"4363:4:1","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":353,"name":"_upgradeToAndCallUUPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"4322:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:46:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":357,"nodeType":"ExpressionStatement","src":"4322:46:1"}]},"documentation":{"id":340,"nodeType":"StructuredDocumentation","src":"3848:308:1","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":359,"implemented":true,"kind":"function","modifiers":[{"id":347,"kind":"modifierInvocation","modifierName":{"id":346,"name":"onlyProxy","nameLocations":["4256:9:1"],"nodeType":"IdentifierPath","referencedDeclaration":307,"src":"4256:9:1"},"nodeType":"ModifierInvocation","src":"4256:9:1"}],"name":"upgradeToAndCall","nameLocation":"4170:16:1","nodeType":"FunctionDefinition","parameters":{"id":345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":342,"mutability":"mutable","name":"newImplementation","nameLocation":"4195:17:1","nodeType":"VariableDeclaration","scope":359,"src":"4187:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":341,"name":"address","nodeType":"ElementaryTypeName","src":"4187:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":344,"mutability":"mutable","name":"data","nameLocation":"4227:4:1","nodeType":"VariableDeclaration","scope":359,"src":"4214:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":343,"name":"bytes","nodeType":"ElementaryTypeName","src":"4214:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4186:46:1"},"returnParameters":{"id":348,"nodeType":"ParameterList","parameters":[],"src":"4266:0:1"},"scope":449,"src":"4161:214:1","stateMutability":"payable","virtual":true,"visibility":"public"},{"body":{"id":380,"nodeType":"Block","src":"4623:267:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":365,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4658:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}],"id":364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4650:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":363,"name":"address","nodeType":"ElementaryTypeName","src":"4650:7:1","typeDescriptions":{}}},"id":366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4650:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":367,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"4667:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4650:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":369,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"4728:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1089_$","typeString":"type(library ERC1967Utils)"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4741:17:1","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":841,"src":"4728:30:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4728:32:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":372,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"4764:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4728:42:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4650:120:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":379,"nodeType":"IfStatement","src":"4633:251:1","trueBody":{"id":378,"nodeType":"Block","src":"4823:61:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":375,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"4844:27:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4844:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":377,"nodeType":"RevertStatement","src":"4837:36:1"}]}}]},"documentation":{"id":360,"nodeType":"StructuredDocumentation","src":"4381:192:1","text":" @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC-1967 compliant implementation pointing to self."},"id":381,"implemented":true,"kind":"function","modifiers":[],"name":"_checkProxy","nameLocation":"4587:11:1","nodeType":"FunctionDefinition","parameters":{"id":361,"nodeType":"ParameterList","parameters":[],"src":"4598:2:1"},"returnParameters":{"id":362,"nodeType":"ParameterList","parameters":[],"src":"4623:0:1"},"scope":449,"src":"4578:312:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":396,"nodeType":"Block","src":"5059:161:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":387,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5081:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UUPSUpgradeable_$449","typeString":"contract UUPSUpgradeable"}],"id":386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5073:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":385,"name":"address","nodeType":"ElementaryTypeName","src":"5073:7:1","typeDescriptions":{}}},"id":388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5073:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":389,"name":"__self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"5090:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5073:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":395,"nodeType":"IfStatement","src":"5069:145:1","trueBody":{"id":394,"nodeType":"Block","src":"5098:116:1","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":391,"name":"UUPSUnauthorizedCallContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"5174:27:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5174:29:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":393,"nodeType":"RevertStatement","src":"5167:36:1"}]}}]},"documentation":{"id":382,"nodeType":"StructuredDocumentation","src":"4896:106:1","text":" @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}."},"id":397,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNotDelegated","nameLocation":"5016:18:1","nodeType":"FunctionDefinition","parameters":{"id":383,"nodeType":"ParameterList","parameters":[],"src":"5034:2:1"},"returnParameters":{"id":384,"nodeType":"ParameterList","parameters":[],"src":"5059:0:1"},"scope":449,"src":"5007:213:1","stateMutability":"view","virtual":true,"visibility":"internal"},{"documentation":{"id":398,"nodeType":"StructuredDocumentation","src":"5226:372:1","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":403,"implemented":false,"kind":"function","modifiers":[],"name":"_authorizeUpgrade","nameLocation":"5612:17:1","nodeType":"FunctionDefinition","parameters":{"id":401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":400,"mutability":"mutable","name":"newImplementation","nameLocation":"5638:17:1","nodeType":"VariableDeclaration","scope":403,"src":"5630:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":399,"name":"address","nodeType":"ElementaryTypeName","src":"5630:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5629:27:1"},"returnParameters":{"id":402,"nodeType":"ParameterList","parameters":[],"src":"5673:0:1"},"scope":449,"src":"5603:71:1","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":447,"nodeType":"Block","src":"6117:453:1","statements":[{"clauses":[{"block":{"id":436,"nodeType":"Block","src":"6207:212:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":419,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"6225:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":420,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"6233:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1089_$","typeString":"type(library ERC1967Utils)"}},"id":421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6246:19:1","memberName":"IMPLEMENTATION_SLOT","nodeType":"MemberAccess","referencedDeclaration":810,"src":"6233:32:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"6225:40:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":428,"nodeType":"IfStatement","src":"6221:120:1","trueBody":{"id":427,"nodeType":"Block","src":"6267:74:1","statements":[{"errorCall":{"arguments":[{"id":424,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"6321:4:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":423,"name":"UUPSUnsupportedProxiableUUID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":299,"src":"6292:28:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6292:34:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":426,"nodeType":"RevertStatement","src":"6285:41:1"}]}},{"expression":{"arguments":[{"id":432,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"6384:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":433,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":408,"src":"6403:4:1","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":429,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"6354:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1089_$","typeString":"type(library ERC1967Utils)"}},"id":431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6367:16:1","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":904,"src":"6354:29:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6354:54:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":435,"nodeType":"ExpressionStatement","src":"6354:54:1"}]},"errorName":"","id":437,"nodeType":"TryCatchClause","parameters":{"id":418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":417,"mutability":"mutable","name":"slot","nameLocation":"6201:4:1","nodeType":"VariableDeclaration","scope":437,"src":"6193:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":416,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6193:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6192:14:1"},"src":"6184:235:1"},{"block":{"id":444,"nodeType":"Block","src":"6426:138:1","statements":[{"errorCall":{"arguments":[{"id":441,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"6535:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":438,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"6493:12:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1089_$","typeString":"type(library ERC1967Utils)"}},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6506:28:1","memberName":"ERC1967InvalidImplementation","nodeType":"MemberAccess","referencedDeclaration":815,"src":"6493:41:1","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6493:60:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":443,"nodeType":"RevertStatement","src":"6486:67:1"}]},"errorName":"","id":445,"nodeType":"TryCatchClause","src":"6420:144:1"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":412,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"6149:17:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":411,"name":"IERC1822Proxiable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"6131:17:1","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1822Proxiable_$757_$","typeString":"type(contract IERC1822Proxiable)"}},"id":413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6131:36:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1822Proxiable_$757","typeString":"contract IERC1822Proxiable"}},"id":414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6168:13:1","memberName":"proxiableUUID","nodeType":"MemberAccess","referencedDeclaration":756,"src":"6131:50:1","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_bytes32_$","typeString":"function () view external returns (bytes32)"}},"id":415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6131:52:1","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":446,"nodeType":"TryStatement","src":"6127:437:1"}]},"documentation":{"id":404,"nodeType":"StructuredDocumentation","src":"5680:347:1","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 ERC-1967.\n Emits an {IERC1967-Upgraded} event."},"id":448,"implemented":true,"kind":"function","modifiers":[],"name":"_upgradeToAndCallUUPS","nameLocation":"6041:21:1","nodeType":"FunctionDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":406,"mutability":"mutable","name":"newImplementation","nameLocation":"6071:17:1","nodeType":"VariableDeclaration","scope":448,"src":"6063:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":405,"name":"address","nodeType":"ElementaryTypeName","src":"6063:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":408,"mutability":"mutable","name":"data","nameLocation":"6103:4:1","nodeType":"VariableDeclaration","scope":448,"src":"6090:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":407,"name":"bytes","nodeType":"ElementaryTypeName","src":"6090:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6062:46:1"},"returnParameters":{"id":410,"nodeType":"ParameterList","parameters":[],"src":"6117:0:1"},"scope":449,"src":"6032:538:1","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":450,"src":"986:5586:1","usedErrors":[16,19,294,299,815,828,1647,1940],"usedEvents":[24,734]}],"src":"115:6458:1"},"id":1},"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","exportedSymbols":{"Initializable":[267],"ReentrancyGuardUpgradeable":[578]},"id":579,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":451,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:2"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"../proxy/utils/Initializable.sol","id":453,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":579,"sourceUnit":268,"src":"134:63:2","symbolAliases":[{"foreign":{"id":452,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":267,"src":"142:13:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":455,"name":"Initializable","nameLocations":["1142:13:2"],"nodeType":"IdentifierPath","referencedDeclaration":267,"src":"1142:13:2"},"id":456,"nodeType":"InheritanceSpecifier","src":"1142:13:2"}],"canonicalName":"ReentrancyGuardUpgradeable","contractDependencies":[],"contractKind":"contract","documentation":{"id":454,"nodeType":"StructuredDocumentation","src":"199:894:2","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 EIP-1153 (transient storage) is available on the chain you're deploying at,\n consider using {ReentrancyGuardTransient} instead.\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":578,"linearizedBaseContracts":[578,267],"name":"ReentrancyGuardUpgradeable","nameLocation":"1112:26:2","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":459,"mutability":"constant","name":"NOT_ENTERED","nameLocation":"1935:11:2","nodeType":"VariableDeclaration","scope":578,"src":"1910:40:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":457,"name":"uint256","nodeType":"ElementaryTypeName","src":"1910:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1949:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":462,"mutability":"constant","name":"ENTERED","nameLocation":"1981:7:2","nodeType":"VariableDeclaration","scope":578,"src":"1956:36:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":460,"name":"uint256","nodeType":"ElementaryTypeName","src":"1956:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1991:1:2","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"canonicalName":"ReentrancyGuardUpgradeable.ReentrancyGuardStorage","documentation":{"id":463,"nodeType":"StructuredDocumentation","src":"1999:73:2","text":"@custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard"},"id":466,"members":[{"constant":false,"id":465,"mutability":"mutable","name":"_status","nameLocation":"2125:7:2","nodeType":"VariableDeclaration","scope":466,"src":"2117:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":464,"name":"uint256","nodeType":"ElementaryTypeName","src":"2117:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ReentrancyGuardStorage","nameLocation":"2084:22:2","nodeType":"StructDefinition","scope":578,"src":"2077:62:2","visibility":"public"},{"constant":true,"id":469,"mutability":"constant","name":"ReentrancyGuardStorageLocation","nameLocation":"2289:30:2","nodeType":"VariableDeclaration","scope":578,"src":"2264:124:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":467,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2264:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030","id":468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2322:66:2","typeDescriptions":{"typeIdentifier":"t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1","typeString":"int_const 7031...(69 digits omitted)...8416"},"value":"0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00"},"visibility":"private"},{"body":{"id":476,"nodeType":"Block","src":"2489:89:2","statements":[{"AST":{"nativeSrc":"2508:64:2","nodeType":"YulBlock","src":"2508:64:2","statements":[{"nativeSrc":"2522:40:2","nodeType":"YulAssignment","src":"2522:40:2","value":{"name":"ReentrancyGuardStorageLocation","nativeSrc":"2532:30:2","nodeType":"YulIdentifier","src":"2532:30:2"},"variableNames":[{"name":"$.slot","nativeSrc":"2522:6:2","nodeType":"YulIdentifier","src":"2522:6:2"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":473,"isOffset":false,"isSlot":true,"src":"2522:6:2","suffix":"slot","valueSize":1},{"declaration":469,"isOffset":false,"isSlot":false,"src":"2532:30:2","valueSize":1}],"id":475,"nodeType":"InlineAssembly","src":"2499:73:2"}]},"id":477,"implemented":true,"kind":"function","modifiers":[],"name":"_getReentrancyGuardStorage","nameLocation":"2404:26:2","nodeType":"FunctionDefinition","parameters":{"id":470,"nodeType":"ParameterList","parameters":[],"src":"2430:2:2"},"returnParameters":{"id":474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":473,"mutability":"mutable","name":"$","nameLocation":"2486:1:2","nodeType":"VariableDeclaration","scope":477,"src":"2455:32:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":472,"nodeType":"UserDefinedTypeName","pathNode":{"id":471,"name":"ReentrancyGuardStorage","nameLocations":["2455:22:2"],"nodeType":"IdentifierPath","referencedDeclaration":466,"src":"2455:22:2"},"referencedDeclaration":466,"src":"2455:22:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"src":"2454:34:2"},"scope":578,"src":"2395:183:2","stateMutability":"pure","virtual":false,"visibility":"private"},{"documentation":{"id":478,"nodeType":"StructuredDocumentation","src":"2584:52:2","text":" @dev Unauthorized reentrant call."},"errorSelector":"3ee5aeb5","id":480,"name":"ReentrancyGuardReentrantCall","nameLocation":"2647:28:2","nodeType":"ErrorDefinition","parameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"2675:2:2"},"src":"2641:37:2"},{"body":{"id":488,"nodeType":"Block","src":"2744:51:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":485,"name":"__ReentrancyGuard_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":507,"src":"2754:32:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2754:34:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":487,"nodeType":"ExpressionStatement","src":"2754:34:2"}]},"id":489,"implemented":true,"kind":"function","modifiers":[{"id":483,"kind":"modifierInvocation","modifierName":{"id":482,"name":"onlyInitializing","nameLocations":["2727:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":162,"src":"2727:16:2"},"nodeType":"ModifierInvocation","src":"2727:16:2"}],"name":"__ReentrancyGuard_init","nameLocation":"2693:22:2","nodeType":"FunctionDefinition","parameters":{"id":481,"nodeType":"ParameterList","parameters":[],"src":"2715:2:2"},"returnParameters":{"id":484,"nodeType":"ParameterList","parameters":[],"src":"2744:0:2"},"scope":578,"src":"2684:111:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":506,"nodeType":"Block","src":"2871:113:2","statements":[{"assignments":[496],"declarations":[{"constant":false,"id":496,"mutability":"mutable","name":"$","nameLocation":"2912:1:2","nodeType":"VariableDeclaration","scope":506,"src":"2881:32:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":495,"nodeType":"UserDefinedTypeName","pathNode":{"id":494,"name":"ReentrancyGuardStorage","nameLocations":["2881:22:2"],"nodeType":"IdentifierPath","referencedDeclaration":466,"src":"2881:22:2"},"referencedDeclaration":466,"src":"2881:22:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":499,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":497,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"2916:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$466_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2916:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2881:63:2"},{"expression":{"id":504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":500,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":496,"src":"2954:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2956:7:2","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":465,"src":"2954:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":503,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":459,"src":"2966:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2954:23:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":505,"nodeType":"ExpressionStatement","src":"2954:23:2"}]},"id":507,"implemented":true,"kind":"function","modifiers":[{"id":492,"kind":"modifierInvocation","modifierName":{"id":491,"name":"onlyInitializing","nameLocations":["2854:16:2"],"nodeType":"IdentifierPath","referencedDeclaration":162,"src":"2854:16:2"},"nodeType":"ModifierInvocation","src":"2854:16:2"}],"name":"__ReentrancyGuard_init_unchained","nameLocation":"2810:32:2","nodeType":"FunctionDefinition","parameters":{"id":490,"nodeType":"ParameterList","parameters":[],"src":"2842:2:2"},"returnParameters":{"id":493,"nodeType":"ParameterList","parameters":[],"src":"2871:0:2"},"scope":578,"src":"2801:183:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":517,"nodeType":"Block","src":"3385:79:2","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":510,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":543,"src":"3395:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3395:21:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":512,"nodeType":"ExpressionStatement","src":"3395:21:2"},{"id":513,"nodeType":"PlaceholderStatement","src":"3426:1:2"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":514,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":559,"src":"3437:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3437:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":516,"nodeType":"ExpressionStatement","src":"3437:20:2"}]},"documentation":{"id":508,"nodeType":"StructuredDocumentation","src":"2990:366:2","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":518,"name":"nonReentrant","nameLocation":"3370:12:2","nodeType":"ModifierDefinition","parameters":{"id":509,"nodeType":"ParameterList","parameters":[],"src":"3382:2:2"},"src":"3361:103:2","virtual":false,"visibility":"internal"},{"body":{"id":542,"nodeType":"Block","src":"3509:345:2","statements":[{"assignments":[523],"declarations":[{"constant":false,"id":523,"mutability":"mutable","name":"$","nameLocation":"3550:1:2","nodeType":"VariableDeclaration","scope":542,"src":"3519:32:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":522,"nodeType":"UserDefinedTypeName","pathNode":{"id":521,"name":"ReentrancyGuardStorage","nameLocations":["3519:22:2"],"nodeType":"IdentifierPath","referencedDeclaration":466,"src":"3519:22:2"},"referencedDeclaration":466,"src":"3519:22:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":526,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":524,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"3554:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$466_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3554:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3519:63:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":527,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"3670:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":528,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3672:7:2","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":465,"src":"3670:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":529,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"3683:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3670:20:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":535,"nodeType":"IfStatement","src":"3666:88:2","trueBody":{"id":534,"nodeType":"Block","src":"3692:62:2","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":531,"name":"ReentrancyGuardReentrantCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":480,"src":"3713:28:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3713:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":533,"nodeType":"RevertStatement","src":"3706:37:2"}]}},{"expression":{"id":540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":536,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":523,"src":"3828:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3830:7:2","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":465,"src":"3828:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":539,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"3840:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3828:19:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":541,"nodeType":"ExpressionStatement","src":"3828:19:2"}]},"id":543,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"3479:19:2","nodeType":"FunctionDefinition","parameters":{"id":519,"nodeType":"ParameterList","parameters":[],"src":"3498:2:2"},"returnParameters":{"id":520,"nodeType":"ParameterList","parameters":[],"src":"3509:0:2"},"scope":578,"src":"3470:384:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":558,"nodeType":"Block","src":"3898:245:2","statements":[{"assignments":[548],"declarations":[{"constant":false,"id":548,"mutability":"mutable","name":"$","nameLocation":"3939:1:2","nodeType":"VariableDeclaration","scope":558,"src":"3908:32:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":547,"nodeType":"UserDefinedTypeName","pathNode":{"id":546,"name":"ReentrancyGuardStorage","nameLocations":["3908:22:2"],"nodeType":"IdentifierPath","referencedDeclaration":466,"src":"3908:22:2"},"referencedDeclaration":466,"src":"3908:22:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":551,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":549,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"3943:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$466_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3908:63:2"},{"expression":{"id":556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":552,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":548,"src":"4113:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4115:7:2","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":465,"src":"4113:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":555,"name":"NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":459,"src":"4125:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4113:23:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":557,"nodeType":"ExpressionStatement","src":"4113:23:2"}]},"id":559,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"3869:18:2","nodeType":"FunctionDefinition","parameters":{"id":544,"nodeType":"ParameterList","parameters":[],"src":"3887:2:2"},"returnParameters":{"id":545,"nodeType":"ParameterList","parameters":[],"src":"3898:0:2"},"scope":578,"src":"3860:283:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":576,"nodeType":"Block","src":"4386:117:2","statements":[{"assignments":[567],"declarations":[{"constant":false,"id":567,"mutability":"mutable","name":"$","nameLocation":"4427:1:2","nodeType":"VariableDeclaration","scope":576,"src":"4396:32:2","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"},"typeName":{"id":566,"nodeType":"UserDefinedTypeName","pathNode":{"id":565,"name":"ReentrancyGuardStorage","nameLocations":["4396:22:2"],"nodeType":"IdentifierPath","referencedDeclaration":466,"src":"4396:22:2"},"referencedDeclaration":466,"src":"4396:22:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage"}},"visibility":"internal"}],"id":570,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":568,"name":"_getReentrancyGuardStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":477,"src":"4431:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$466_storage_ptr_$","typeString":"function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4431:28:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4396:63:2"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":571,"name":"$","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":567,"src":"4476:1:2","typeDescriptions":{"typeIdentifier":"t_struct$_ReentrancyGuardStorage_$466_storage_ptr","typeString":"struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer"}},"id":572,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4478:7:2","memberName":"_status","nodeType":"MemberAccess","referencedDeclaration":465,"src":"4476:9:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":573,"name":"ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"4489:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4476:20:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":564,"id":575,"nodeType":"Return","src":"4469:27:2"}]},"documentation":{"id":560,"nodeType":"StructuredDocumentation","src":"4149:168:2","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":577,"implemented":true,"kind":"function","modifiers":[],"name":"_reentrancyGuardEntered","nameLocation":"4331:23:2","nodeType":"FunctionDefinition","parameters":{"id":561,"nodeType":"ParameterList","parameters":[],"src":"4354:2:2"},"returnParameters":{"id":564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":577,"src":"4380:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":562,"name":"bool","nodeType":"ElementaryTypeName","src":"4380:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4379:6:2"},"scope":578,"src":"4322:181:2","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":579,"src":"1094:3411:2","usedErrors":[16,19,480],"usedEvents":[24]}],"src":"109:4397:2"},"id":2},"@openzeppelin/contracts/access/Ownable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","exportedSymbols":{"Context":[1927],"Ownable":[726]},"id":727,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":580,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"102:24:3"},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../utils/Context.sol","id":582,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":727,"sourceUnit":1928,"src":"128:45:3","symbolAliases":[{"foreign":{"id":581,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"136:7:3","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":584,"name":"Context","nameLocations":["692:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":1927,"src":"692:7:3"},"id":585,"nodeType":"InheritanceSpecifier","src":"692:7:3"}],"canonicalName":"Ownable","contractDependencies":[],"contractKind":"contract","documentation":{"id":583,"nodeType":"StructuredDocumentation","src":"175:487:3","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":726,"linearizedBaseContracts":[726,1927],"name":"Ownable","nameLocation":"681:7:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":587,"mutability":"mutable","name":"_owner","nameLocation":"722:6:3","nodeType":"VariableDeclaration","scope":726,"src":"706:22:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":586,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"documentation":{"id":588,"nodeType":"StructuredDocumentation","src":"735:85:3","text":" @dev The caller account is not authorized to perform an operation."},"errorSelector":"118cdaa7","id":592,"name":"OwnableUnauthorizedAccount","nameLocation":"831:26:3","nodeType":"ErrorDefinition","parameters":{"id":591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":590,"mutability":"mutable","name":"account","nameLocation":"866:7:3","nodeType":"VariableDeclaration","scope":592,"src":"858:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":589,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"857:17:3"},"src":"825:50:3"},{"documentation":{"id":593,"nodeType":"StructuredDocumentation","src":"881:82:3","text":" @dev The owner is not a valid owner account. (eg. `address(0)`)"},"errorSelector":"1e4fbdf7","id":597,"name":"OwnableInvalidOwner","nameLocation":"974:19:3","nodeType":"ErrorDefinition","parameters":{"id":596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":595,"mutability":"mutable","name":"owner","nameLocation":"1002:5:3","nodeType":"VariableDeclaration","scope":597,"src":"994:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":594,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"993:15:3"},"src":"968:41:3"},{"anonymous":false,"eventSelector":"8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","id":603,"name":"OwnershipTransferred","nameLocation":"1021:20:3","nodeType":"EventDefinition","parameters":{"id":602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":599,"indexed":true,"mutability":"mutable","name":"previousOwner","nameLocation":"1058:13:3","nodeType":"VariableDeclaration","scope":603,"src":"1042:29:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":598,"name":"address","nodeType":"ElementaryTypeName","src":"1042:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":601,"indexed":true,"mutability":"mutable","name":"newOwner","nameLocation":"1089:8:3","nodeType":"VariableDeclaration","scope":603,"src":"1073:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":600,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1041:57:3"},"src":"1015:84:3"},{"body":{"id":628,"nodeType":"Block","src":"1259:153:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":609,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"1273:12:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1297: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":611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1289:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":610,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:3","typeDescriptions":{}}},"id":613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1289:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1273:26:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":623,"nodeType":"IfStatement","src":"1269:95:3","trueBody":{"id":622,"nodeType":"Block","src":"1301:63:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1350: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":617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1342:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":616,"name":"address","nodeType":"ElementaryTypeName","src":"1342:7:3","typeDescriptions":{}}},"id":619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1342:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":615,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":597,"src":"1322:19:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1322:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":621,"nodeType":"RevertStatement","src":"1315:38:3"}]}},{"expression":{"arguments":[{"id":625,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":606,"src":"1392:12:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":624,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":725,"src":"1373:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1373:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":627,"nodeType":"ExpressionStatement","src":"1373:32:3"}]},"documentation":{"id":604,"nodeType":"StructuredDocumentation","src":"1105:115:3","text":" @dev Initializes the contract setting the address provided by the deployer as the initial owner."},"id":629,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":606,"mutability":"mutable","name":"initialOwner","nameLocation":"1245:12:3","nodeType":"VariableDeclaration","scope":629,"src":"1237:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":605,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1236:22:3"},"returnParameters":{"id":608,"nodeType":"ParameterList","parameters":[],"src":"1259:0:3"},"scope":726,"src":"1225:187:3","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":636,"nodeType":"Block","src":"1521:41:3","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":632,"name":"_checkOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":663,"src":"1531:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1531:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":634,"nodeType":"ExpressionStatement","src":"1531:13:3"},{"id":635,"nodeType":"PlaceholderStatement","src":"1554:1:3"}]},"documentation":{"id":630,"nodeType":"StructuredDocumentation","src":"1418:77:3","text":" @dev Throws if called by any account other than the owner."},"id":637,"name":"onlyOwner","nameLocation":"1509:9:3","nodeType":"ModifierDefinition","parameters":{"id":631,"nodeType":"ParameterList","parameters":[],"src":"1518:2:3"},"src":"1500:62:3","virtual":false,"visibility":"internal"},{"body":{"id":645,"nodeType":"Block","src":"1693:30:3","statements":[{"expression":{"id":643,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"1710:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":642,"id":644,"nodeType":"Return","src":"1703:13:3"}]},"documentation":{"id":638,"nodeType":"StructuredDocumentation","src":"1568:65:3","text":" @dev Returns the address of the current owner."},"functionSelector":"8da5cb5b","id":646,"implemented":true,"kind":"function","modifiers":[],"name":"owner","nameLocation":"1647:5:3","nodeType":"FunctionDefinition","parameters":{"id":639,"nodeType":"ParameterList","parameters":[],"src":"1652:2:3"},"returnParameters":{"id":642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":641,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":646,"src":"1684:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":640,"name":"address","nodeType":"ElementaryTypeName","src":"1684:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1683:9:3"},"scope":726,"src":"1638:85:3","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":662,"nodeType":"Block","src":"1841:117:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":650,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"1855:5:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1855:7:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":652,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"1866:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1866:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:23:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":661,"nodeType":"IfStatement","src":"1851:101:3","trueBody":{"id":660,"nodeType":"Block","src":"1880:72:3","statements":[{"errorCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":656,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1909,"src":"1928:10:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1928:12:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":655,"name":"OwnableUnauthorizedAccount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":592,"src":"1901:26:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:40:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":659,"nodeType":"RevertStatement","src":"1894:47:3"}]}}]},"documentation":{"id":647,"nodeType":"StructuredDocumentation","src":"1729:62:3","text":" @dev Throws if the sender is not the owner."},"id":663,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOwner","nameLocation":"1805:11:3","nodeType":"FunctionDefinition","parameters":{"id":648,"nodeType":"ParameterList","parameters":[],"src":"1816:2:3"},"returnParameters":{"id":649,"nodeType":"ParameterList","parameters":[],"src":"1841:0:3"},"scope":726,"src":"1796:162:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":676,"nodeType":"Block","src":"2347:47:3","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2384: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":671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2376:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":670,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:3","typeDescriptions":{}}},"id":673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":669,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":725,"src":"2357:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2357:30:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":675,"nodeType":"ExpressionStatement","src":"2357:30:3"}]},"documentation":{"id":664,"nodeType":"StructuredDocumentation","src":"1964:324:3","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":677,"implemented":true,"kind":"function","modifiers":[{"id":667,"kind":"modifierInvocation","modifierName":{"id":666,"name":"onlyOwner","nameLocations":["2337:9:3"],"nodeType":"IdentifierPath","referencedDeclaration":637,"src":"2337:9:3"},"nodeType":"ModifierInvocation","src":"2337:9:3"}],"name":"renounceOwnership","nameLocation":"2302:17:3","nodeType":"FunctionDefinition","parameters":{"id":665,"nodeType":"ParameterList","parameters":[],"src":"2319:2:3"},"returnParameters":{"id":668,"nodeType":"ParameterList","parameters":[],"src":"2347:0:3"},"scope":726,"src":"2293:101:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":704,"nodeType":"Block","src":"2613:145:3","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":685,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"2627:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647: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":687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2639:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":686,"name":"address","nodeType":"ElementaryTypeName","src":"2639:7:3","typeDescriptions":{}}},"id":689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2627:22:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":699,"nodeType":"IfStatement","src":"2623:91:3","trueBody":{"id":698,"nodeType":"Block","src":"2651:63:3","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2700: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":693,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2692:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":692,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:3","typeDescriptions":{}}},"id":695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":691,"name":"OwnableInvalidOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":597,"src":"2672:19:3","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2672:31:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":697,"nodeType":"RevertStatement","src":"2665:38:3"}]}},{"expression":{"arguments":[{"id":701,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"2742:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":700,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":725,"src":"2723:18:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:28:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":703,"nodeType":"ExpressionStatement","src":"2723:28:3"}]},"documentation":{"id":678,"nodeType":"StructuredDocumentation","src":"2400:138:3","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."},"functionSelector":"f2fde38b","id":705,"implemented":true,"kind":"function","modifiers":[{"id":683,"kind":"modifierInvocation","modifierName":{"id":682,"name":"onlyOwner","nameLocations":["2603:9:3"],"nodeType":"IdentifierPath","referencedDeclaration":637,"src":"2603:9:3"},"nodeType":"ModifierInvocation","src":"2603:9:3"}],"name":"transferOwnership","nameLocation":"2552:17:3","nodeType":"FunctionDefinition","parameters":{"id":681,"nodeType":"ParameterList","parameters":[{"constant":false,"id":680,"mutability":"mutable","name":"newOwner","nameLocation":"2578:8:3","nodeType":"VariableDeclaration","scope":705,"src":"2570:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":679,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:18:3"},"returnParameters":{"id":684,"nodeType":"ParameterList","parameters":[],"src":"2613:0:3"},"scope":726,"src":"2543:215:3","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":724,"nodeType":"Block","src":"2975:124:3","statements":[{"assignments":[712],"declarations":[{"constant":false,"id":712,"mutability":"mutable","name":"oldOwner","nameLocation":"2993:8:3","nodeType":"VariableDeclaration","scope":724,"src":"2985:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":711,"name":"address","nodeType":"ElementaryTypeName","src":"2985:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":714,"initialValue":{"id":713,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"3004:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2985:25:3"},{"expression":{"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":715,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"3020:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":716,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":708,"src":"3029:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3020:17:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":718,"nodeType":"ExpressionStatement","src":"3020:17:3"},{"eventCall":{"arguments":[{"id":720,"name":"oldOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":712,"src":"3073:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":721,"name":"newOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":708,"src":"3083:8:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":719,"name":"OwnershipTransferred","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":603,"src":"3052:20:3","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3052:40:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":723,"nodeType":"EmitStatement","src":"3047:45:3"}]},"documentation":{"id":706,"nodeType":"StructuredDocumentation","src":"2764:143:3","text":" @dev Transfers ownership of the contract to a new account (`newOwner`).\n Internal function without access restriction."},"id":725,"implemented":true,"kind":"function","modifiers":[],"name":"_transferOwnership","nameLocation":"2921:18:3","nodeType":"FunctionDefinition","parameters":{"id":709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":708,"mutability":"mutable","name":"newOwner","nameLocation":"2948:8:3","nodeType":"VariableDeclaration","scope":725,"src":"2940:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":707,"name":"address","nodeType":"ElementaryTypeName","src":"2940:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2939:18:3"},"returnParameters":{"id":710,"nodeType":"ParameterList","parameters":[],"src":"2975:0:3"},"scope":726,"src":"2912:187:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":727,"src":"663:2438:3","usedErrors":[592,597],"usedEvents":[603]}],"src":"102:3000:3"},"id":3},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","exportedSymbols":{"IERC1967":[747]},"id":748,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":728,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1967","contractDependencies":[],"contractKind":"interface","documentation":{"id":729,"nodeType":"StructuredDocumentation","src":"133:101:4","text":" @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC."},"fullyImplemented":true,"id":747,"linearizedBaseContracts":[747],"name":"IERC1967","nameLocation":"245:8:4","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":730,"nodeType":"StructuredDocumentation","src":"260:68:4","text":" @dev Emitted when the implementation is upgraded."},"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":734,"name":"Upgraded","nameLocation":"339:8:4","nodeType":"EventDefinition","parameters":{"id":733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":732,"indexed":true,"mutability":"mutable","name":"implementation","nameLocation":"364:14:4","nodeType":"VariableDeclaration","scope":734,"src":"348:30:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":731,"name":"address","nodeType":"ElementaryTypeName","src":"348:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"347:32:4"},"src":"333:47:4"},{"anonymous":false,"documentation":{"id":735,"nodeType":"StructuredDocumentation","src":"386:67:4","text":" @dev Emitted when the admin account has changed."},"eventSelector":"7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f","id":741,"name":"AdminChanged","nameLocation":"464:12:4","nodeType":"EventDefinition","parameters":{"id":740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":737,"indexed":false,"mutability":"mutable","name":"previousAdmin","nameLocation":"485:13:4","nodeType":"VariableDeclaration","scope":741,"src":"477:21:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":736,"name":"address","nodeType":"ElementaryTypeName","src":"477:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":739,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"508:8:4","nodeType":"VariableDeclaration","scope":741,"src":"500:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":738,"name":"address","nodeType":"ElementaryTypeName","src":"500:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"476:41:4"},"src":"458:60:4"},{"anonymous":false,"documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"524:59:4","text":" @dev Emitted when the beacon is changed."},"eventSelector":"1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e","id":746,"name":"BeaconUpgraded","nameLocation":"594:14:4","nodeType":"EventDefinition","parameters":{"id":745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"indexed":true,"mutability":"mutable","name":"beacon","nameLocation":"625:6:4","nodeType":"VariableDeclaration","scope":746,"src":"609:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"609:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"608:24:4"},"src":"588:45:4"}],"scope":748,"src":"235:400:4","usedErrors":[],"usedEvents":[734,741,746]}],"src":"107:529:4"},"id":4},"@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC1822.sol","exportedSymbols":{"IERC1822Proxiable":[757]},"id":758,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":749,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1822Proxiable","contractDependencies":[],"contractKind":"interface","documentation":{"id":750,"nodeType":"StructuredDocumentation","src":"139:204:5","text":" @dev ERC-1822: 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":757,"linearizedBaseContracts":[757],"name":"IERC1822Proxiable","nameLocation":"354:17:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":751,"nodeType":"StructuredDocumentation","src":"378:438:5","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":756,"implemented":false,"kind":"function","modifiers":[],"name":"proxiableUUID","nameLocation":"830:13:5","nodeType":"FunctionDefinition","parameters":{"id":752,"nodeType":"ParameterList","parameters":[],"src":"843:2:5"},"returnParameters":{"id":755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":754,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":756,"src":"869:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":753,"name":"bytes32","nodeType":"ElementaryTypeName","src":"869:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"868:9:5"},"scope":757,"src":"821:57:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":758,"src":"344:536:5","usedErrors":[],"usedEvents":[]}],"src":"113:768:5"},"id":5},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","exportedSymbols":{"ERC1967Proxy":[795],"ERC1967Utils":[1089],"Proxy":[1125]},"id":796,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":759,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"114:24:6"},{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","file":"../Proxy.sol","id":761,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":796,"sourceUnit":1126,"src":"140:35:6","symbolAliases":[{"foreign":{"id":760,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1125,"src":"148:5:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"./ERC1967Utils.sol","id":763,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":796,"sourceUnit":1090,"src":"176:48:6","symbolAliases":[{"foreign":{"id":762,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"184:12:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":765,"name":"Proxy","nameLocations":["625:5:6"],"nodeType":"IdentifierPath","referencedDeclaration":1125,"src":"625:5:6"},"id":766,"nodeType":"InheritanceSpecifier","src":"625:5:6"}],"canonicalName":"ERC1967Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":764,"nodeType":"StructuredDocumentation","src":"226:373:6","text":" @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy."},"fullyImplemented":true,"id":795,"linearizedBaseContracts":[795,1125],"name":"ERC1967Proxy","nameLocation":"609:12:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":781,"nodeType":"Block","src":"1145:69:6","statements":[{"expression":{"arguments":[{"id":777,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":769,"src":"1185:14:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":778,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":771,"src":"1201:5:6","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":774,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"1155:12:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1089_$","typeString":"type(library ERC1967Utils)"}},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1168:16:6","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":904,"src":"1155:29:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1155:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":780,"nodeType":"ExpressionStatement","src":"1155:52:6"}]},"documentation":{"id":767,"nodeType":"StructuredDocumentation","src":"637:439:6","text":" @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"id":782,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":769,"mutability":"mutable","name":"implementation","nameLocation":"1101:14:6","nodeType":"VariableDeclaration","scope":782,"src":"1093:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":768,"name":"address","nodeType":"ElementaryTypeName","src":"1093:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":771,"mutability":"mutable","name":"_data","nameLocation":"1130:5:6","nodeType":"VariableDeclaration","scope":782,"src":"1117:18:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":770,"name":"bytes","nodeType":"ElementaryTypeName","src":"1117:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1092:44:6"},"returnParameters":{"id":773,"nodeType":"ParameterList","parameters":[],"src":"1145:0:6"},"scope":795,"src":"1081:133:6","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[1106],"body":{"id":793,"nodeType":"Block","src":"1659:56:6","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":789,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"1676:12:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1089_$","typeString":"type(library ERC1967Utils)"}},"id":790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1689:17:6","memberName":"getImplementation","nodeType":"MemberAccess","referencedDeclaration":841,"src":"1676:30:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1676:32:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":788,"id":792,"nodeType":"Return","src":"1669:39:6"}]},"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"1220:358:6","text":" @dev Returns the current implementation address.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`"},"id":794,"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"1592:15:6","nodeType":"FunctionDefinition","overrides":{"id":785,"nodeType":"OverrideSpecifier","overrides":[],"src":"1632:8:6"},"parameters":{"id":784,"nodeType":"ParameterList","parameters":[],"src":"1607:2:6"},"returnParameters":{"id":788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":794,"src":"1650:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":786,"name":"address","nodeType":"ElementaryTypeName","src":"1650:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1649:9:6"},"scope":795,"src":"1583:132:6","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":796,"src":"600:1117:6","usedErrors":[815,828,1647,1940],"usedEvents":[734]}],"src":"114:1604:6"},"id":6},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","exportedSymbols":{"Address":[1897],"ERC1967Utils":[1089],"IBeacon":[1135],"IERC1967":[747],"StorageSlot":[2073]},"id":1090,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":797,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"114:24:7"},{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","file":"../beacon/IBeacon.sol","id":799,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1090,"sourceUnit":1136,"src":"140:46:7","symbolAliases":[{"foreign":{"id":798,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"148:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","id":801,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1090,"sourceUnit":748,"src":"187:55:7","symbolAliases":[{"foreign":{"id":800,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"195:8:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":803,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1090,"sourceUnit":1898,"src":"243:48:7","symbolAliases":[{"foreign":{"id":802,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"251:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"../../utils/StorageSlot.sol","id":805,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1090,"sourceUnit":2074,"src":"292:56:7","symbolAliases":[{"foreign":{"id":804,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2073,"src":"300:11:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC1967Utils","contractDependencies":[],"contractKind":"library","documentation":{"id":806,"nodeType":"StructuredDocumentation","src":"350:145:7","text":" @dev This library provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots."},"fullyImplemented":true,"id":1089,"linearizedBaseContracts":[1089],"name":"ERC1967Utils","nameLocation":"504:12:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":807,"nodeType":"StructuredDocumentation","src":"523:170:7","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":810,"mutability":"constant","name":"IMPLEMENTATION_SLOT","nameLocation":"789:19:7","nodeType":"VariableDeclaration","scope":1089,"src":"763:114:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":808,"name":"bytes32","nodeType":"ElementaryTypeName","src":"763:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263","id":809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"811:66:7","typeDescriptions":{"typeIdentifier":"t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1","typeString":"int_const 2444...(69 digits omitted)...5612"},"value":"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc"},"visibility":"internal"},{"documentation":{"id":811,"nodeType":"StructuredDocumentation","src":"884:69:7","text":" @dev The `implementation` of the proxy is invalid."},"errorSelector":"4c9c8ce3","id":815,"name":"ERC1967InvalidImplementation","nameLocation":"964:28:7","nodeType":"ErrorDefinition","parameters":{"id":814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":813,"mutability":"mutable","name":"implementation","nameLocation":"1001:14:7","nodeType":"VariableDeclaration","scope":815,"src":"993:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":812,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"992:24:7"},"src":"958:59:7"},{"documentation":{"id":816,"nodeType":"StructuredDocumentation","src":"1023:60:7","text":" @dev The `admin` of the proxy is invalid."},"errorSelector":"62e77ba2","id":820,"name":"ERC1967InvalidAdmin","nameLocation":"1094:19:7","nodeType":"ErrorDefinition","parameters":{"id":819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":818,"mutability":"mutable","name":"admin","nameLocation":"1122:5:7","nodeType":"VariableDeclaration","scope":820,"src":"1114:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":817,"name":"address","nodeType":"ElementaryTypeName","src":"1114:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1113:15:7"},"src":"1088:41:7"},{"documentation":{"id":821,"nodeType":"StructuredDocumentation","src":"1135:61:7","text":" @dev The `beacon` of the proxy is invalid."},"errorSelector":"64ced0ec","id":825,"name":"ERC1967InvalidBeacon","nameLocation":"1207:20:7","nodeType":"ErrorDefinition","parameters":{"id":824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":823,"mutability":"mutable","name":"beacon","nameLocation":"1236:6:7","nodeType":"VariableDeclaration","scope":825,"src":"1228:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":822,"name":"address","nodeType":"ElementaryTypeName","src":"1228:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1227:16:7"},"src":"1201:43:7"},{"documentation":{"id":826,"nodeType":"StructuredDocumentation","src":"1250:82:7","text":" @dev An upgrade function sees `msg.value > 0` that may be lost."},"errorSelector":"b398979f","id":828,"name":"ERC1967NonPayable","nameLocation":"1343:17:7","nodeType":"ErrorDefinition","parameters":{"id":827,"nodeType":"ParameterList","parameters":[],"src":"1360:2:7"},"src":"1337:26:7"},{"body":{"id":840,"nodeType":"Block","src":"1502:77:7","statements":[{"expression":{"expression":{"arguments":[{"id":836,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":810,"src":"1546:19:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":834,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2073,"src":"1519:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2073_$","typeString":"type(library StorageSlot)"}},"id":835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1531:14:7","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1984,"src":"1519:26:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1955_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1519:47:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1955_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1567:5:7","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1954,"src":"1519:53:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":833,"id":839,"nodeType":"Return","src":"1512:60:7"}]},"documentation":{"id":829,"nodeType":"StructuredDocumentation","src":"1369:67:7","text":" @dev Returns the current implementation address."},"id":841,"implemented":true,"kind":"function","modifiers":[],"name":"getImplementation","nameLocation":"1450:17:7","nodeType":"FunctionDefinition","parameters":{"id":830,"nodeType":"ParameterList","parameters":[],"src":"1467:2:7"},"returnParameters":{"id":833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":832,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":841,"src":"1493:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":831,"name":"address","nodeType":"ElementaryTypeName","src":"1493:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1492:9:7"},"scope":1089,"src":"1441:138:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":867,"nodeType":"Block","src":"1734:218:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":847,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":844,"src":"1748:17:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1766:4:7","memberName":"code","nodeType":"MemberAccess","src":"1748:22:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1771:6:7","memberName":"length","nodeType":"MemberAccess","src":"1748:29:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1781:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1748:34:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":857,"nodeType":"IfStatement","src":"1744:119:7","trueBody":{"id":856,"nodeType":"Block","src":"1784:79:7","statements":[{"errorCall":{"arguments":[{"id":853,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":844,"src":"1834:17:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":852,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"1805:28:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1805:47:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":855,"nodeType":"RevertStatement","src":"1798:54:7"}]}},{"expression":{"id":865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":861,"name":"IMPLEMENTATION_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":810,"src":"1899:19:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":858,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2073,"src":"1872:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2073_$","typeString":"type(library StorageSlot)"}},"id":860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1884:14:7","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1984,"src":"1872:26:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1955_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1872:47:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1955_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":863,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1920:5:7","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1954,"src":"1872:53:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":864,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":844,"src":"1928:17:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1872:73:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":866,"nodeType":"ExpressionStatement","src":"1872:73:7"}]},"documentation":{"id":842,"nodeType":"StructuredDocumentation","src":"1585:81:7","text":" @dev Stores a new address in the ERC-1967 implementation slot."},"id":868,"implemented":true,"kind":"function","modifiers":[],"name":"_setImplementation","nameLocation":"1680:18:7","nodeType":"FunctionDefinition","parameters":{"id":845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":844,"mutability":"mutable","name":"newImplementation","nameLocation":"1707:17:7","nodeType":"VariableDeclaration","scope":868,"src":"1699:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":843,"name":"address","nodeType":"ElementaryTypeName","src":"1699:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1698:27:7"},"returnParameters":{"id":846,"nodeType":"ParameterList","parameters":[],"src":"1734:0:7"},"scope":1089,"src":"1671:281:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":903,"nodeType":"Block","src":"2345:263:7","statements":[{"expression":{"arguments":[{"id":877,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"2374:17:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":876,"name":"_setImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"2355:18:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2355:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":879,"nodeType":"ExpressionStatement","src":"2355:37:7"},{"eventCall":{"arguments":[{"id":883,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"2425:17:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":880,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"2407:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$747_$","typeString":"type(contract IERC1967)"}},"id":882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2416:8:7","memberName":"Upgraded","nodeType":"MemberAccess","referencedDeclaration":734,"src":"2407:17:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2407:36:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":885,"nodeType":"EmitStatement","src":"2402:41:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":886,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":873,"src":"2458:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2463:6:7","memberName":"length","nodeType":"MemberAccess","src":"2458:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2472:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2458:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":901,"nodeType":"Block","src":"2559:43:7","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":898,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1088,"src":"2573:16:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2573:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":900,"nodeType":"ExpressionStatement","src":"2573:18:7"}]},"id":902,"nodeType":"IfStatement","src":"2454:148:7","trueBody":{"id":897,"nodeType":"Block","src":"2475:78:7","statements":[{"expression":{"arguments":[{"id":893,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"2518:17:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":894,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":873,"src":"2537:4:7","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":890,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"2489:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$1897_$","typeString":"type(library Address)"}},"id":892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2497:20:7","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":1814,"src":"2489:28:7","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":895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2489:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":896,"nodeType":"ExpressionStatement","src":"2489:53:7"}]}}]},"documentation":{"id":869,"nodeType":"StructuredDocumentation","src":"1958:301:7","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":904,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"2273:16:7","nodeType":"FunctionDefinition","parameters":{"id":874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":871,"mutability":"mutable","name":"newImplementation","nameLocation":"2298:17:7","nodeType":"VariableDeclaration","scope":904,"src":"2290:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":870,"name":"address","nodeType":"ElementaryTypeName","src":"2290:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":873,"mutability":"mutable","name":"data","nameLocation":"2330:4:7","nodeType":"VariableDeclaration","scope":904,"src":"2317:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":872,"name":"bytes","nodeType":"ElementaryTypeName","src":"2317:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2289:46:7"},"returnParameters":{"id":875,"nodeType":"ParameterList","parameters":[],"src":"2345:0:7"},"scope":1089,"src":"2264:344:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":905,"nodeType":"StructuredDocumentation","src":"2614:145:7","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":908,"mutability":"constant","name":"ADMIN_SLOT","nameLocation":"2855:10:7","nodeType":"VariableDeclaration","scope":1089,"src":"2829:105:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":906,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2829:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2868:66:7","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"internal"},{"body":{"id":920,"nodeType":"Block","src":"3339:68:7","statements":[{"expression":{"expression":{"arguments":[{"id":916,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":908,"src":"3383:10:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":914,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2073,"src":"3356:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2073_$","typeString":"type(library StorageSlot)"}},"id":915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3368:14:7","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1984,"src":"3356:26:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1955_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3356:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1955_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":918,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3395:5:7","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1954,"src":"3356:44:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":913,"id":919,"nodeType":"Return","src":"3349:51:7"}]},"documentation":{"id":909,"nodeType":"StructuredDocumentation","src":"2941:341:7","text":" @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`"},"id":921,"implemented":true,"kind":"function","modifiers":[],"name":"getAdmin","nameLocation":"3296:8:7","nodeType":"FunctionDefinition","parameters":{"id":910,"nodeType":"ParameterList","parameters":[],"src":"3304:2:7"},"returnParameters":{"id":913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":912,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":921,"src":"3330:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":911,"name":"address","nodeType":"ElementaryTypeName","src":"3330:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3329:9:7"},"scope":1089,"src":"3287:120:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":951,"nodeType":"Block","src":"3535:172:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":927,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"3549:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3569:1:7","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":929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3561:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":928,"name":"address","nodeType":"ElementaryTypeName","src":"3561:7:7","typeDescriptions":{}}},"id":931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3561:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3549:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":941,"nodeType":"IfStatement","src":"3545:91:7","trueBody":{"id":940,"nodeType":"Block","src":"3573:63:7","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3622:1:7","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":935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3614:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":934,"name":"address","nodeType":"ElementaryTypeName","src":"3614:7:7","typeDescriptions":{}}},"id":937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3614:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":933,"name":"ERC1967InvalidAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":820,"src":"3594:19:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3594:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":939,"nodeType":"RevertStatement","src":"3587:38:7"}]}},{"expression":{"id":949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":945,"name":"ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":908,"src":"3672:10:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":942,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2073,"src":"3645:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2073_$","typeString":"type(library StorageSlot)"}},"id":944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3657:14:7","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1984,"src":"3645:26:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1955_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3645:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1955_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":947,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3684:5:7","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1954,"src":"3645:44:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":948,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"3692:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3645:55:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":950,"nodeType":"ExpressionStatement","src":"3645:55:7"}]},"documentation":{"id":922,"nodeType":"StructuredDocumentation","src":"3413:72:7","text":" @dev Stores a new address in the ERC-1967 admin slot."},"id":952,"implemented":true,"kind":"function","modifiers":[],"name":"_setAdmin","nameLocation":"3499:9:7","nodeType":"FunctionDefinition","parameters":{"id":925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":924,"mutability":"mutable","name":"newAdmin","nameLocation":"3517:8:7","nodeType":"VariableDeclaration","scope":952,"src":"3509:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":923,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3508:18:7"},"returnParameters":{"id":926,"nodeType":"ParameterList","parameters":[],"src":"3535:0:7"},"scope":1089,"src":"3490:217:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":970,"nodeType":"Block","src":"3875:94:7","statements":[{"eventCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":961,"name":"getAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":921,"src":"3912:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3912:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":963,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"3924:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":958,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"3890:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$747_$","typeString":"type(contract IERC1967)"}},"id":960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3899:12:7","memberName":"AdminChanged","nodeType":"MemberAccess","referencedDeclaration":741,"src":"3890:21:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3890:43:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":965,"nodeType":"EmitStatement","src":"3885:48:7"},{"expression":{"arguments":[{"id":967,"name":"newAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"3953:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":966,"name":"_setAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"3943:9:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3943:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":969,"nodeType":"ExpressionStatement","src":"3943:19:7"}]},"documentation":{"id":953,"nodeType":"StructuredDocumentation","src":"3713:109:7","text":" @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event."},"id":971,"implemented":true,"kind":"function","modifiers":[],"name":"changeAdmin","nameLocation":"3836:11:7","nodeType":"FunctionDefinition","parameters":{"id":956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":955,"mutability":"mutable","name":"newAdmin","nameLocation":"3856:8:7","nodeType":"VariableDeclaration","scope":971,"src":"3848:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":954,"name":"address","nodeType":"ElementaryTypeName","src":"3848:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3847:18:7"},"returnParameters":{"id":957,"nodeType":"ParameterList","parameters":[],"src":"3875:0:7"},"scope":1089,"src":"3827:142:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"documentation":{"id":972,"nodeType":"StructuredDocumentation","src":"3975:201:7","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":975,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"4272:11:7","nodeType":"VariableDeclaration","scope":1089,"src":"4246:106:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":973,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4246:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4286:66:7","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"internal"},{"body":{"id":987,"nodeType":"Block","src":"4468:69:7","statements":[{"expression":{"expression":{"arguments":[{"id":983,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"4512:11:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":981,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2073,"src":"4485:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2073_$","typeString":"type(library StorageSlot)"}},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4497:14:7","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1984,"src":"4485:26:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1955_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4485:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1955_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4525:5:7","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1954,"src":"4485:45:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":980,"id":986,"nodeType":"Return","src":"4478:52:7"}]},"documentation":{"id":976,"nodeType":"StructuredDocumentation","src":"4359:51:7","text":" @dev Returns the current beacon."},"id":988,"implemented":true,"kind":"function","modifiers":[],"name":"getBeacon","nameLocation":"4424:9:7","nodeType":"FunctionDefinition","parameters":{"id":977,"nodeType":"ParameterList","parameters":[],"src":"4433:2:7"},"returnParameters":{"id":980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":979,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":988,"src":"4459:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":978,"name":"address","nodeType":"ElementaryTypeName","src":"4459:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4458:9:7"},"scope":1089,"src":"4415:122:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1033,"nodeType":"Block","src":"4667:390:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":994,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"4681:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4691:4:7","memberName":"code","nodeType":"MemberAccess","src":"4681:14:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4696:6:7","memberName":"length","nodeType":"MemberAccess","src":"4681:21:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4706:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4681:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1004,"nodeType":"IfStatement","src":"4677:95:7","trueBody":{"id":1003,"nodeType":"Block","src":"4709:63:7","statements":[{"errorCall":{"arguments":[{"id":1000,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"4751:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":999,"name":"ERC1967InvalidBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"4730:20:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4730:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1002,"nodeType":"RevertStatement","src":"4723:38:7"}]}},{"expression":{"id":1012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1008,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"4809:11:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1005,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2073,"src":"4782:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$2073_$","typeString":"type(library StorageSlot)"}},"id":1007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4794:14:7","memberName":"getAddressSlot","nodeType":"MemberAccess","referencedDeclaration":1984,"src":"4782:26:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$1955_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)"}},"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4782:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1955_storage_ptr","typeString":"struct StorageSlot.AddressSlot storage pointer"}},"id":1010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4822:5:7","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1954,"src":"4782:45:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1011,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"4830:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4782:57:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1013,"nodeType":"ExpressionStatement","src":"4782:57:7"},{"assignments":[1015],"declarations":[{"constant":false,"id":1015,"mutability":"mutable","name":"beaconImplementation","nameLocation":"4858:20:7","nodeType":"VariableDeclaration","scope":1033,"src":"4850:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1014,"name":"address","nodeType":"ElementaryTypeName","src":"4850:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1021,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1017,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":991,"src":"4889:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1016,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"4881:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1135_$","typeString":"type(contract IBeacon)"}},"id":1018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1135","typeString":"contract IBeacon"}},"id":1019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4900:14:7","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1134,"src":"4881:33:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:35:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4850:66:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1022,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1015,"src":"4930:20:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4951:4:7","memberName":"code","nodeType":"MemberAccess","src":"4930:25:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4956:6:7","memberName":"length","nodeType":"MemberAccess","src":"4930:32:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4966:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4930:37:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1032,"nodeType":"IfStatement","src":"4926:125:7","trueBody":{"id":1031,"nodeType":"Block","src":"4969:82:7","statements":[{"errorCall":{"arguments":[{"id":1028,"name":"beaconImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1015,"src":"5019:20:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1027,"name":"ERC1967InvalidImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"4990:28:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4990:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1030,"nodeType":"RevertStatement","src":"4983:57:7"}]}}]},"documentation":{"id":989,"nodeType":"StructuredDocumentation","src":"4543:72:7","text":" @dev Stores a new beacon in the ERC-1967 beacon slot."},"id":1034,"implemented":true,"kind":"function","modifiers":[],"name":"_setBeacon","nameLocation":"4629:10:7","nodeType":"FunctionDefinition","parameters":{"id":992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":991,"mutability":"mutable","name":"newBeacon","nameLocation":"4648:9:7","nodeType":"VariableDeclaration","scope":1034,"src":"4640:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":990,"name":"address","nodeType":"ElementaryTypeName","src":"4640:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4639:19:7"},"returnParameters":{"id":993,"nodeType":"ParameterList","parameters":[],"src":"4667:0:7"},"scope":1089,"src":"4620:437:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1073,"nodeType":"Block","src":"5661:263:7","statements":[{"expression":{"arguments":[{"id":1043,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"5682:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1042,"name":"_setBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1034,"src":"5671:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5671:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1045,"nodeType":"ExpressionStatement","src":"5671:21:7"},{"eventCall":{"arguments":[{"id":1049,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"5731:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1046,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"5707:8:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1967_$747_$","typeString":"type(contract IERC1967)"}},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5716:14:7","memberName":"BeaconUpgraded","nodeType":"MemberAccess","referencedDeclaration":746,"src":"5707:23:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5707:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1051,"nodeType":"EmitStatement","src":"5702:39:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1052,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1039,"src":"5756:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5761:6:7","memberName":"length","nodeType":"MemberAccess","src":"5756:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5770:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5756:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1071,"nodeType":"Block","src":"5875:43:7","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1068,"name":"_checkNonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1088,"src":"5889:16:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5889:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1070,"nodeType":"ExpressionStatement","src":"5889:18:7"}]},"id":1072,"nodeType":"IfStatement","src":"5752:166:7","trueBody":{"id":1067,"nodeType":"Block","src":"5773:96:7","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":1060,"name":"newBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"5824:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1059,"name":"IBeacon","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"5816:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBeacon_$1135_$","typeString":"type(contract IBeacon)"}},"id":1061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBeacon_$1135","typeString":"contract IBeacon"}},"id":1062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5835:14:7","memberName":"implementation","nodeType":"MemberAccess","referencedDeclaration":1134,"src":"5816:33:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":1063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5816:35:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1064,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1039,"src":"5853:4:7","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":1056,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"5787:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$1897_$","typeString":"type(library Address)"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5795:20:7","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":1814,"src":"5787:28:7","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":1065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5787:71:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1066,"nodeType":"ExpressionStatement","src":"5787:71:7"}]}}]},"documentation":{"id":1035,"nodeType":"StructuredDocumentation","src":"5063:514:7","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":1074,"implemented":true,"kind":"function","modifiers":[],"name":"upgradeBeaconToAndCall","nameLocation":"5591:22:7","nodeType":"FunctionDefinition","parameters":{"id":1040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1037,"mutability":"mutable","name":"newBeacon","nameLocation":"5622:9:7","nodeType":"VariableDeclaration","scope":1074,"src":"5614:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1036,"name":"address","nodeType":"ElementaryTypeName","src":"5614:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1039,"mutability":"mutable","name":"data","nameLocation":"5646:4:7","nodeType":"VariableDeclaration","scope":1074,"src":"5633:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1038,"name":"bytes","nodeType":"ElementaryTypeName","src":"5633:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5613:38:7"},"returnParameters":{"id":1041,"nodeType":"ParameterList","parameters":[],"src":"5661:0:7"},"scope":1089,"src":"5582:342:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1087,"nodeType":"Block","src":"6149:86:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1078,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6163:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6167:5:7","memberName":"value","nodeType":"MemberAccess","src":"6163:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6175:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6163:13:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1086,"nodeType":"IfStatement","src":"6159:70:7","trueBody":{"id":1085,"nodeType":"Block","src":"6178:51:7","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1082,"name":"ERC1967NonPayable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"6199:17:7","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6199:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1084,"nodeType":"RevertStatement","src":"6192:26:7"}]}}]},"documentation":{"id":1075,"nodeType":"StructuredDocumentation","src":"5930:178:7","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":1088,"implemented":true,"kind":"function","modifiers":[],"name":"_checkNonPayable","nameLocation":"6122:16:7","nodeType":"FunctionDefinition","parameters":{"id":1076,"nodeType":"ParameterList","parameters":[],"src":"6138:2:7"},"returnParameters":{"id":1077,"nodeType":"ParameterList","parameters":[],"src":"6149:0:7"},"scope":1089,"src":"6113:122:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":1090,"src":"496:5741:7","usedErrors":[815,820,825,828],"usedEvents":[]}],"src":"114:6124:7"},"id":7},"@openzeppelin/contracts/proxy/Proxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/Proxy.sol","exportedSymbols":{"Proxy":[1125]},"id":1126,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1091,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:8"},{"abstract":true,"baseContracts":[],"canonicalName":"Proxy","contractDependencies":[],"contractKind":"contract","documentation":{"id":1092,"nodeType":"StructuredDocumentation","src":"125:598:8","text":" @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy."},"fullyImplemented":false,"id":1125,"linearizedBaseContracts":[1125],"name":"Proxy","nameLocation":"742:5:8","nodeType":"ContractDefinition","nodes":[{"body":{"id":1099,"nodeType":"Block","src":"1009:835:8","statements":[{"AST":{"nativeSrc":"1028:810:8","nodeType":"YulBlock","src":"1028:810:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1281:1:8","nodeType":"YulLiteral","src":"1281:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"1284:1:8","nodeType":"YulLiteral","src":"1284:1:8","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1287:12:8","nodeType":"YulIdentifier","src":"1287:12:8"},"nativeSrc":"1287:14:8","nodeType":"YulFunctionCall","src":"1287:14:8"}],"functionName":{"name":"calldatacopy","nativeSrc":"1268:12:8","nodeType":"YulIdentifier","src":"1268:12:8"},"nativeSrc":"1268:34:8","nodeType":"YulFunctionCall","src":"1268:34:8"},"nativeSrc":"1268:34:8","nodeType":"YulExpressionStatement","src":"1268:34:8"},{"nativeSrc":"1429:74:8","nodeType":"YulVariableDeclaration","src":"1429:74:8","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"1456:3:8","nodeType":"YulIdentifier","src":"1456:3:8"},"nativeSrc":"1456:5:8","nodeType":"YulFunctionCall","src":"1456:5:8"},{"name":"implementation","nativeSrc":"1463:14:8","nodeType":"YulIdentifier","src":"1463:14:8"},{"kind":"number","nativeSrc":"1479:1:8","nodeType":"YulLiteral","src":"1479:1:8","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nativeSrc":"1482:12:8","nodeType":"YulIdentifier","src":"1482:12:8"},"nativeSrc":"1482:14:8","nodeType":"YulFunctionCall","src":"1482:14:8"},{"kind":"number","nativeSrc":"1498:1:8","nodeType":"YulLiteral","src":"1498:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"1501:1:8","nodeType":"YulLiteral","src":"1501:1:8","type":"","value":"0"}],"functionName":{"name":"delegatecall","nativeSrc":"1443:12:8","nodeType":"YulIdentifier","src":"1443:12:8"},"nativeSrc":"1443:60:8","nodeType":"YulFunctionCall","src":"1443:60:8"},"variables":[{"name":"result","nativeSrc":"1433:6:8","nodeType":"YulTypedName","src":"1433:6:8","type":""}]},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1571:1:8","nodeType":"YulLiteral","src":"1571:1:8","type":"","value":"0"},{"kind":"number","nativeSrc":"1574:1:8","nodeType":"YulLiteral","src":"1574:1:8","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1577:14:8","nodeType":"YulIdentifier","src":"1577:14:8"},"nativeSrc":"1577:16:8","nodeType":"YulFunctionCall","src":"1577:16:8"}],"functionName":{"name":"returndatacopy","nativeSrc":"1556:14:8","nodeType":"YulIdentifier","src":"1556:14:8"},"nativeSrc":"1556:38:8","nodeType":"YulFunctionCall","src":"1556:38:8"},"nativeSrc":"1556:38:8","nodeType":"YulExpressionStatement","src":"1556:38:8"},{"cases":[{"body":{"nativeSrc":"1689:59:8","nodeType":"YulBlock","src":"1689:59:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1714:1:8","nodeType":"YulLiteral","src":"1714:1:8","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1717:14:8","nodeType":"YulIdentifier","src":"1717:14:8"},"nativeSrc":"1717:16:8","nodeType":"YulFunctionCall","src":"1717:16:8"}],"functionName":{"name":"revert","nativeSrc":"1707:6:8","nodeType":"YulIdentifier","src":"1707:6:8"},"nativeSrc":"1707:27:8","nodeType":"YulFunctionCall","src":"1707:27:8"},"nativeSrc":"1707:27:8","nodeType":"YulExpressionStatement","src":"1707:27:8"}]},"nativeSrc":"1682:66:8","nodeType":"YulCase","src":"1682:66:8","value":{"kind":"number","nativeSrc":"1687:1:8","nodeType":"YulLiteral","src":"1687:1:8","type":"","value":"0"}},{"body":{"nativeSrc":"1769:59:8","nodeType":"YulBlock","src":"1769:59:8","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1794:1:8","nodeType":"YulLiteral","src":"1794:1:8","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nativeSrc":"1797:14:8","nodeType":"YulIdentifier","src":"1797:14:8"},"nativeSrc":"1797:16:8","nodeType":"YulFunctionCall","src":"1797:16:8"}],"functionName":{"name":"return","nativeSrc":"1787:6:8","nodeType":"YulIdentifier","src":"1787:6:8"},"nativeSrc":"1787:27:8","nodeType":"YulFunctionCall","src":"1787:27:8"},"nativeSrc":"1787:27:8","nodeType":"YulExpressionStatement","src":"1787:27:8"}]},"nativeSrc":"1761:67:8","nodeType":"YulCase","src":"1761:67:8","value":"default"}],"expression":{"name":"result","nativeSrc":"1615:6:8","nodeType":"YulIdentifier","src":"1615:6:8"},"nativeSrc":"1608:220:8","nodeType":"YulSwitch","src":"1608:220:8"}]},"evmVersion":"paris","externalReferences":[{"declaration":1095,"isOffset":false,"isSlot":false,"src":"1463:14:8","valueSize":1}],"id":1098,"nodeType":"InlineAssembly","src":"1019:819:8"}]},"documentation":{"id":1093,"nodeType":"StructuredDocumentation","src":"754:190:8","text":" @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":1100,"implemented":true,"kind":"function","modifiers":[],"name":"_delegate","nameLocation":"958:9:8","nodeType":"FunctionDefinition","parameters":{"id":1096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1095,"mutability":"mutable","name":"implementation","nameLocation":"976:14:8","nodeType":"VariableDeclaration","scope":1100,"src":"968:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1094,"name":"address","nodeType":"ElementaryTypeName","src":"968:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"967:24:8"},"returnParameters":{"id":1097,"nodeType":"ParameterList","parameters":[],"src":"1009:0:8"},"scope":1125,"src":"949:895:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"documentation":{"id":1101,"nodeType":"StructuredDocumentation","src":"1850:173:8","text":" @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n function and {_fallback} should delegate."},"id":1106,"implemented":false,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"2037:15:8","nodeType":"FunctionDefinition","parameters":{"id":1102,"nodeType":"ParameterList","parameters":[],"src":"2052:2:8"},"returnParameters":{"id":1105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1106,"src":"2086:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1103,"name":"address","nodeType":"ElementaryTypeName","src":"2086:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2085:9:8"},"scope":1125,"src":"2028:67:8","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1115,"nodeType":"Block","src":"2361:45:8","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1111,"name":"_implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1106,"src":"2381:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2381:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1110,"name":"_delegate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2371:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2371:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1114,"nodeType":"ExpressionStatement","src":"2371:28:8"}]},"documentation":{"id":1107,"nodeType":"StructuredDocumentation","src":"2101:217:8","text":" @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller."},"id":1116,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"2332:9:8","nodeType":"FunctionDefinition","parameters":{"id":1108,"nodeType":"ParameterList","parameters":[],"src":"2341:2:8"},"returnParameters":{"id":1109,"nodeType":"ParameterList","parameters":[],"src":"2361:0:8"},"scope":1125,"src":"2323:83:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1123,"nodeType":"Block","src":"2639:28:8","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1120,"name":"_fallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1116,"src":"2649:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2649:11:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1122,"nodeType":"ExpressionStatement","src":"2649:11:8"}]},"documentation":{"id":1117,"nodeType":"StructuredDocumentation","src":"2412:186:8","text":" @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data."},"id":1124,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1118,"nodeType":"ParameterList","parameters":[],"src":"2611:2:8"},"returnParameters":{"id":1119,"nodeType":"ParameterList","parameters":[],"src":"2639:0:8"},"scope":1125,"src":"2603:64:8","stateMutability":"payable","virtual":true,"visibility":"external"}],"scope":1126,"src":"724:1945:8","usedErrors":[],"usedEvents":[]}],"src":"99:2571:8"},"id":8},"@openzeppelin/contracts/proxy/beacon/IBeacon.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/beacon/IBeacon.sol","exportedSymbols":{"IBeacon":[1135]},"id":1136,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1127,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:9"},{"abstract":false,"baseContracts":[],"canonicalName":"IBeacon","contractDependencies":[],"contractKind":"interface","documentation":{"id":1128,"nodeType":"StructuredDocumentation","src":"134:79:9","text":" @dev This is the interface that {BeaconProxy} expects of its beacon."},"fullyImplemented":false,"id":1135,"linearizedBaseContracts":[1135],"name":"IBeacon","nameLocation":"224:7:9","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1129,"nodeType":"StructuredDocumentation","src":"238:168:9","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":1134,"implemented":false,"kind":"function","modifiers":[],"name":"implementation","nameLocation":"420:14:9","nodeType":"FunctionDefinition","parameters":{"id":1130,"nodeType":"ParameterList","parameters":[],"src":"434:2:9"},"returnParameters":{"id":1133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1134,"src":"460:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1131,"name":"address","nodeType":"ElementaryTypeName","src":"460:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"459:9:9"},"scope":1135,"src":"411:58:9","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1136,"src":"214:257:9","usedErrors":[],"usedEvents":[]}],"src":"108:364:9"},"id":9},"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol","exportedSymbols":{"ITransparentUpgradeableProxy":[1205],"Ownable":[726],"ProxyAdmin":[1183]},"id":1184,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1137,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"116:24:10"},{"absolutePath":"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","file":"./TransparentUpgradeableProxy.sol","id":1139,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1184,"sourceUnit":1320,"src":"142:79:10","symbolAliases":[{"foreign":{"id":1138,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"150:28:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/access/Ownable.sol","file":"../../access/Ownable.sol","id":1141,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1184,"sourceUnit":727,"src":"222:49:10","symbolAliases":[{"foreign":{"id":1140,"name":"Ownable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"230:7:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1143,"name":"Ownable","nameLocations":["525:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":726,"src":"525:7:10"},"id":1144,"nodeType":"InheritanceSpecifier","src":"525:7:10"}],"canonicalName":"ProxyAdmin","contractDependencies":[],"contractKind":"contract","documentation":{"id":1142,"nodeType":"StructuredDocumentation","src":"273:228:10","text":" @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\n explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}."},"fullyImplemented":true,"id":1183,"linearizedBaseContracts":[1183,726,1927],"name":"ProxyAdmin","nameLocation":"511:10:10","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":1145,"nodeType":"StructuredDocumentation","src":"539:643:10","text":" @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address,address)`\n and `upgradeAndCall(address,address,bytes)` are present, and `upgrade` must be used if no function should be called,\n while `upgradeAndCall` will invoke the `receive` function if the third argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeAndCall(address,address,bytes)` is present, and the third 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":1148,"mutability":"constant","name":"UPGRADE_INTERFACE_VERSION","nameLocation":"1210:25:10","nodeType":"VariableDeclaration","scope":1183,"src":"1187:58:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1146,"name":"string","nodeType":"ElementaryTypeName","src":"1187:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"352e302e30","id":1147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1238:7:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c","typeString":"literal_string \"5.0.0\""},"value":"5.0.0"},"visibility":"public"},{"body":{"id":1157,"nodeType":"Block","src":"1385:2:10","statements":[]},"documentation":{"id":1149,"nodeType":"StructuredDocumentation","src":"1252:72:10","text":" @dev Sets the initial owner who can perform upgrades."},"id":1158,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":1154,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1151,"src":"1371:12:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1155,"kind":"baseConstructorSpecifier","modifierName":{"id":1153,"name":"Ownable","nameLocations":["1363:7:10"],"nodeType":"IdentifierPath","referencedDeclaration":726,"src":"1363:7:10"},"nodeType":"ModifierInvocation","src":"1363:21:10"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1151,"mutability":"mutable","name":"initialOwner","nameLocation":"1349:12:10","nodeType":"VariableDeclaration","scope":1158,"src":"1341:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1150,"name":"address","nodeType":"ElementaryTypeName","src":"1341:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1340:22:10"},"returnParameters":{"id":1156,"nodeType":"ParameterList","parameters":[],"src":"1385:0:10"},"scope":1183,"src":"1329:58:10","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1181,"nodeType":"Block","src":"1883:79:10","statements":[{"expression":{"arguments":[{"id":1177,"name":"implementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1164,"src":"1934:14:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1178,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"1950:4:10","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":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1171,"name":"proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1162,"src":"1893:5:10","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1205","typeString":"contract ITransparentUpgradeableProxy"}},"id":1173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1899:16:10","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":1204,"src":"1893:22:10","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) payable external"}},"id":1176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":1174,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1923:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1927:5:10","memberName":"value","nodeType":"MemberAccess","src":"1923:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1893:40:10","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$__$value","typeString":"function (address,bytes memory) payable external"}},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1893:62:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1180,"nodeType":"ExpressionStatement","src":"1893:62:10"}]},"documentation":{"id":1159,"nodeType":"StructuredDocumentation","src":"1393:319:10","text":" @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation.\n See {TransparentUpgradeableProxy-_dispatchUpgradeToAndCall}.\n Requirements:\n - This contract must be the admin of `proxy`.\n - If `data` is empty, `msg.value` must be zero."},"functionSelector":"9623609d","id":1182,"implemented":true,"kind":"function","modifiers":[{"id":1169,"kind":"modifierInvocation","modifierName":{"id":1168,"name":"onlyOwner","nameLocations":["1873:9:10"],"nodeType":"IdentifierPath","referencedDeclaration":637,"src":"1873:9:10"},"nodeType":"ModifierInvocation","src":"1873:9:10"}],"name":"upgradeAndCall","nameLocation":"1726:14:10","nodeType":"FunctionDefinition","parameters":{"id":1167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1162,"mutability":"mutable","name":"proxy","nameLocation":"1779:5:10","nodeType":"VariableDeclaration","scope":1182,"src":"1750:34:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1205","typeString":"contract ITransparentUpgradeableProxy"},"typeName":{"id":1161,"nodeType":"UserDefinedTypeName","pathNode":{"id":1160,"name":"ITransparentUpgradeableProxy","nameLocations":["1750:28:10"],"nodeType":"IdentifierPath","referencedDeclaration":1205,"src":"1750:28:10"},"referencedDeclaration":1205,"src":"1750:28:10","typeDescriptions":{"typeIdentifier":"t_contract$_ITransparentUpgradeableProxy_$1205","typeString":"contract ITransparentUpgradeableProxy"}},"visibility":"internal"},{"constant":false,"id":1164,"mutability":"mutable","name":"implementation","nameLocation":"1802:14:10","nodeType":"VariableDeclaration","scope":1182,"src":"1794:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1163,"name":"address","nodeType":"ElementaryTypeName","src":"1794:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1166,"mutability":"mutable","name":"data","nameLocation":"1839:4:10","nodeType":"VariableDeclaration","scope":1182,"src":"1826:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1165,"name":"bytes","nodeType":"ElementaryTypeName","src":"1826:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1740:109:10"},"returnParameters":{"id":1170,"nodeType":"ParameterList","parameters":[],"src":"1883:0:10"},"scope":1183,"src":"1717:245:10","stateMutability":"payable","virtual":true,"visibility":"public"}],"scope":1184,"src":"502:1462:10","usedErrors":[592,597],"usedEvents":[603]}],"src":"116:1849:10"},"id":10},"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","exportedSymbols":{"ERC1967Proxy":[795],"ERC1967Utils":[1089],"IERC1967":[747],"ITransparentUpgradeableProxy":[1205],"ProxyAdmin":[1183],"TransparentUpgradeableProxy":[1319]},"id":1320,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1185,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"133:24:11"},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"../ERC1967/ERC1967Utils.sol","id":1187,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1320,"sourceUnit":1090,"src":"159:57:11","symbolAliases":[{"foreign":{"id":1186,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"167:12:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","id":1189,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1320,"sourceUnit":796,"src":"217:57:11","symbolAliases":[{"foreign":{"id":1188,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":795,"src":"225:12:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","id":1191,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1320,"sourceUnit":748,"src":"275:55:11","symbolAliases":[{"foreign":{"id":1190,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"283:8:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol","file":"./ProxyAdmin.sol","id":1193,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1320,"sourceUnit":1184,"src":"331:44:11","symbolAliases":[{"foreign":{"id":1192,"name":"ProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1183,"src":"339:10:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1195,"name":"IERC1967","nameLocations":["865:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":747,"src":"865:8:11"},"id":1196,"nodeType":"InheritanceSpecifier","src":"865:8:11"}],"canonicalName":"ITransparentUpgradeableProxy","contractDependencies":[],"contractKind":"interface","documentation":{"id":1194,"nodeType":"StructuredDocumentation","src":"377:445:11","text":" @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\n does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\n mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\n include them in the ABI so this interface must be used to interact with it."},"fullyImplemented":false,"id":1205,"linearizedBaseContracts":[1205,747],"name":"ITransparentUpgradeableProxy","nameLocation":"833:28:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1197,"nodeType":"StructuredDocumentation","src":"880:47:11","text":"@dev See {UUPSUpgradeable-upgradeToAndCall}"},"functionSelector":"4f1ef286","id":1204,"implemented":false,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"941:16:11","nodeType":"FunctionDefinition","parameters":{"id":1202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1199,"mutability":"mutable","name":"newImplementation","nameLocation":"966:17:11","nodeType":"VariableDeclaration","scope":1204,"src":"958:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1198,"name":"address","nodeType":"ElementaryTypeName","src":"958:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1201,"mutability":"mutable","name":"data","nameLocation":"1000:4:11","nodeType":"VariableDeclaration","scope":1204,"src":"985:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1200,"name":"bytes","nodeType":"ElementaryTypeName","src":"985:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"957:48:11"},"returnParameters":{"id":1203,"nodeType":"ParameterList","parameters":[],"src":"1022:0:11"},"scope":1205,"src":"932:91:11","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":1320,"src":"823:202:11","usedErrors":[],"usedEvents":[734,741,746]},{"abstract":false,"baseContracts":[{"baseName":{"id":1207,"name":"ERC1967Proxy","nameLocations":["4354:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":795,"src":"4354:12:11"},"id":1208,"nodeType":"InheritanceSpecifier","src":"4354:12:11"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[1183],"contractKind":"contract","documentation":{"id":1206,"nodeType":"StructuredDocumentation","src":"1027:3286:11","text":" @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\n 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\n the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\n the proxy admin cannot fallback to the target implementation.\n These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\n dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\n call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\n allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\n interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\n NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\n inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\n mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\n fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\n implementation.\n NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\n meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\n IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\n immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\n overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\n undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\n is generally fine if the implementation is trusted.\n WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\n compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\n function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\n could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency."},"fullyImplemented":true,"id":1319,"linearizedBaseContracts":[1319,795,1125],"name":"TransparentUpgradeableProxy","nameLocation":"4323:27:11","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1210,"mutability":"immutable","name":"_admin","nameLocation":"4734:6:11","nodeType":"VariableDeclaration","scope":1319,"src":"4708:32:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1209,"name":"address","nodeType":"ElementaryTypeName","src":"4708:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"documentation":{"id":1211,"nodeType":"StructuredDocumentation","src":"4747:102:11","text":" @dev The proxy caller is the current admin, and can't fallback to the proxy target."},"errorSelector":"d2b576ec","id":1213,"name":"ProxyDeniedAdminAccess","nameLocation":"4860:22:11","nodeType":"ErrorDefinition","parameters":{"id":1212,"nodeType":"ParameterList","parameters":[],"src":"4882:2:11"},"src":"4854:31:11"},{"body":{"id":1245,"nodeType":"Block","src":"5263:190:11","statements":[{"expression":{"id":1236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1227,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1210,"src":"5273:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":1233,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1218,"src":"5305:12:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"5290:14:11","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ProxyAdmin_$1183_$","typeString":"function (address) returns (contract ProxyAdmin)"},"typeName":{"id":1231,"nodeType":"UserDefinedTypeName","pathNode":{"id":1230,"name":"ProxyAdmin","nameLocations":["5294:10:11"],"nodeType":"IdentifierPath","referencedDeclaration":1183,"src":"5294:10:11"},"referencedDeclaration":1183,"src":"5294:10:11","typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$1183","typeString":"contract ProxyAdmin"}}},"id":1234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5290:28:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$1183","typeString":"contract ProxyAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProxyAdmin_$1183","typeString":"contract ProxyAdmin"}],"id":1229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5282:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1228,"name":"address","nodeType":"ElementaryTypeName","src":"5282:7:11","typeDescriptions":{}}},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5282:37:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5273:46:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1237,"nodeType":"ExpressionStatement","src":"5273:46:11"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1241,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1255,"src":"5432:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5432:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1238,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"5407:12:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1089_$","typeString":"type(library ERC1967Utils)"}},"id":1240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5420:11:11","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":971,"src":"5407:24:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5407:39:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1244,"nodeType":"ExpressionStatement","src":"5407:39:11"}]},"documentation":{"id":1214,"nodeType":"StructuredDocumentation","src":"4891:261:11","text":" @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\n backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\n {ERC1967Proxy-constructor}."},"id":1246,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":1223,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1216,"src":"5248:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1224,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1220,"src":"5256:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1225,"kind":"baseConstructorSpecifier","modifierName":{"id":1222,"name":"ERC1967Proxy","nameLocations":["5235:12:11"],"nodeType":"IdentifierPath","referencedDeclaration":795,"src":"5235:12:11"},"nodeType":"ModifierInvocation","src":"5235:27:11"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1216,"mutability":"mutable","name":"_logic","nameLocation":"5177:6:11","nodeType":"VariableDeclaration","scope":1246,"src":"5169:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1215,"name":"address","nodeType":"ElementaryTypeName","src":"5169:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1218,"mutability":"mutable","name":"initialOwner","nameLocation":"5193:12:11","nodeType":"VariableDeclaration","scope":1246,"src":"5185:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1217,"name":"address","nodeType":"ElementaryTypeName","src":"5185:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1220,"mutability":"mutable","name":"_data","nameLocation":"5220:5:11","nodeType":"VariableDeclaration","scope":1246,"src":"5207:18:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1219,"name":"bytes","nodeType":"ElementaryTypeName","src":"5207:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5168:58:11"},"returnParameters":{"id":1226,"nodeType":"ParameterList","parameters":[],"src":"5263:0:11"},"scope":1319,"src":"5157:296:11","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":1254,"nodeType":"Block","src":"5583:30:11","statements":[{"expression":{"id":1252,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1210,"src":"5600:6:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1251,"id":1253,"nodeType":"Return","src":"5593:13:11"}]},"documentation":{"id":1247,"nodeType":"StructuredDocumentation","src":"5459:56:11","text":" @dev Returns the admin of this proxy."},"id":1255,"implemented":true,"kind":"function","modifiers":[],"name":"_proxyAdmin","nameLocation":"5529:11:11","nodeType":"FunctionDefinition","parameters":{"id":1248,"nodeType":"ParameterList","parameters":[],"src":"5540:2:11"},"returnParameters":{"id":1251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1250,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1255,"src":"5574:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1249,"name":"address","nodeType":"ElementaryTypeName","src":"5574:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5573:9:11"},"scope":1319,"src":"5520:93:11","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1116],"body":{"id":1288,"nodeType":"Block","src":"5802:322:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1260,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5816:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5820:6:11","memberName":"sender","nodeType":"MemberAccess","src":"5816:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1262,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1255,"src":"5830:11:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5830:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5816:27:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1286,"nodeType":"Block","src":"6076:42:11","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1281,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6090:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$1319_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":1283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6096:9:11","memberName":"_fallback","nodeType":"MemberAccess","referencedDeclaration":1116,"src":"6090:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6090:17:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1285,"nodeType":"ExpressionStatement","src":"6090:17:11"}]},"id":1287,"nodeType":"IfStatement","src":"5812:306:11","trueBody":{"id":1280,"nodeType":"Block","src":"5845:225:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1265,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5863:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5867:3:11","memberName":"sig","nodeType":"MemberAccess","src":"5863:7:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":1267,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1205,"src":"5874:28:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$1205_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":1268,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5903:16:11","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":1204,"src":"5874:45:11","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function ITransparentUpgradeableProxy.upgradeToAndCall(address,bytes calldata) payable"}},"id":1269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5920:8:11","memberName":"selector","nodeType":"MemberAccess","src":"5874:54:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5863:65:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1278,"nodeType":"Block","src":"6000:60:11","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":1275,"name":"_dispatchUpgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1318,"src":"6018:25:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":1276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6018:27:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1277,"nodeType":"ExpressionStatement","src":"6018:27:11"}]},"id":1279,"nodeType":"IfStatement","src":"5859:201:11","trueBody":{"id":1274,"nodeType":"Block","src":"5930:64:11","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1271,"name":"ProxyDeniedAdminAccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1213,"src":"5955:22:11","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5955:24:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1273,"nodeType":"RevertStatement","src":"5948:31:11"}]}}]}}]},"documentation":{"id":1256,"nodeType":"StructuredDocumentation","src":"5619:131:11","text":" @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior."},"id":1289,"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"5764:9:11","nodeType":"FunctionDefinition","overrides":{"id":1258,"nodeType":"OverrideSpecifier","overrides":[],"src":"5793:8:11"},"parameters":{"id":1257,"nodeType":"ParameterList","parameters":[],"src":"5773:2:11"},"returnParameters":{"id":1259,"nodeType":"ParameterList","parameters":[],"src":"5802:0:11"},"scope":1319,"src":"5755:369:11","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1317,"nodeType":"Block","src":"6371:172:11","statements":[{"assignments":[1294,1296],"declarations":[{"constant":false,"id":1294,"mutability":"mutable","name":"newImplementation","nameLocation":"6390:17:11","nodeType":"VariableDeclaration","scope":1317,"src":"6382:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1293,"name":"address","nodeType":"ElementaryTypeName","src":"6382:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1296,"mutability":"mutable","name":"data","nameLocation":"6422:4:11","nodeType":"VariableDeclaration","scope":1317,"src":"6409:17:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1295,"name":"bytes","nodeType":"ElementaryTypeName","src":"6409:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1309,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":1299,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6441:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6445:4:11","memberName":"data","nodeType":"MemberAccess","src":"6441:8:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6441:12:11","startExpression":{"hexValue":"34","id":1301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6450:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":1304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6456:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1303,"name":"address","nodeType":"ElementaryTypeName","src":"6456:7:11","typeDescriptions":{}}},{"id":1306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6465:5:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1305,"name":"bytes","nodeType":"ElementaryTypeName","src":"6465:5:11","typeDescriptions":{}}}],"id":1307,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6455:16:11","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}],"expression":{"id":1297,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6430:3:11","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6434:6:11","memberName":"decode","nodeType":"MemberAccess","src":"6430:10:11","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:42:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_bytes_memory_ptr_$","typeString":"tuple(address payable,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6381:91:11"},{"expression":{"arguments":[{"id":1313,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"6512:17:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1314,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1296,"src":"6531:4:11","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":1310,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"6482:12:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$1089_$","typeString":"type(library ERC1967Utils)"}},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6495:16:11","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":904,"src":"6482:29:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6482:54:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1316,"nodeType":"ExpressionStatement","src":"6482:54:11"}]},"documentation":{"id":1290,"nodeType":"StructuredDocumentation","src":"6130:191:11","text":" @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"id":1318,"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchUpgradeToAndCall","nameLocation":"6335:25:11","nodeType":"FunctionDefinition","parameters":{"id":1291,"nodeType":"ParameterList","parameters":[],"src":"6360:2:11"},"returnParameters":{"id":1292,"nodeType":"ParameterList","parameters":[],"src":"6371:0:11"},"scope":1319,"src":"6326:217:11","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":1320,"src":"4314:2231:11","usedErrors":[815,820,828,1213,1647,1940],"usedEvents":[734,741]}],"src":"133:6413:11"},"id":11},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","exportedSymbols":{"IERC1155":[1442],"IERC165":[2085]},"id":1443,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1321,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"110:24:12"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":1323,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1443,"sourceUnit":2086,"src":"136:62:12","symbolAliases":[{"foreign":{"id":1322,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2085,"src":"144:7:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1325,"name":"IERC165","nameLocations":["359:7:12"],"nodeType":"IdentifierPath","referencedDeclaration":2085,"src":"359:7:12"},"id":1326,"nodeType":"InheritanceSpecifier","src":"359:7:12"}],"canonicalName":"IERC1155","contractDependencies":[],"contractKind":"interface","documentation":{"id":1324,"nodeType":"StructuredDocumentation","src":"200:136:12","text":" @dev Required interface of an ERC-1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[ERC]."},"fullyImplemented":false,"id":1442,"linearizedBaseContracts":[1442,2085],"name":"IERC1155","nameLocation":"347:8:12","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1327,"nodeType":"StructuredDocumentation","src":"373:125:12","text":" @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`."},"eventSelector":"c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62","id":1339,"name":"TransferSingle","nameLocation":"509:14:12","nodeType":"EventDefinition","parameters":{"id":1338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1329,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"540:8:12","nodeType":"VariableDeclaration","scope":1339,"src":"524:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1328,"name":"address","nodeType":"ElementaryTypeName","src":"524:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1331,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"566:4:12","nodeType":"VariableDeclaration","scope":1339,"src":"550:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1330,"name":"address","nodeType":"ElementaryTypeName","src":"550:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1333,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"588:2:12","nodeType":"VariableDeclaration","scope":1339,"src":"572:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1332,"name":"address","nodeType":"ElementaryTypeName","src":"572:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1335,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"600:2:12","nodeType":"VariableDeclaration","scope":1339,"src":"592:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1334,"name":"uint256","nodeType":"ElementaryTypeName","src":"592:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1337,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"612:5:12","nodeType":"VariableDeclaration","scope":1339,"src":"604:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1336,"name":"uint256","nodeType":"ElementaryTypeName","src":"604:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"523:95:12"},"src":"503:116:12"},{"anonymous":false,"documentation":{"id":1340,"nodeType":"StructuredDocumentation","src":"625:144:12","text":" @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers."},"eventSelector":"4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb","id":1354,"name":"TransferBatch","nameLocation":"780:13:12","nodeType":"EventDefinition","parameters":{"id":1353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1342,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"819:8:12","nodeType":"VariableDeclaration","scope":1354,"src":"803:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1341,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1344,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"853:4:12","nodeType":"VariableDeclaration","scope":1354,"src":"837:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1343,"name":"address","nodeType":"ElementaryTypeName","src":"837:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1346,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"883:2:12","nodeType":"VariableDeclaration","scope":1354,"src":"867:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1345,"name":"address","nodeType":"ElementaryTypeName","src":"867:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1349,"indexed":false,"mutability":"mutable","name":"ids","nameLocation":"905:3:12","nodeType":"VariableDeclaration","scope":1354,"src":"895:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1347,"name":"uint256","nodeType":"ElementaryTypeName","src":"895:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1348,"nodeType":"ArrayTypeName","src":"895:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1352,"indexed":false,"mutability":"mutable","name":"values","nameLocation":"928:6:12","nodeType":"VariableDeclaration","scope":1354,"src":"918:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1350,"name":"uint256","nodeType":"ElementaryTypeName","src":"918:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1351,"nodeType":"ArrayTypeName","src":"918:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"793:147:12"},"src":"774:167:12"},{"anonymous":false,"documentation":{"id":1355,"nodeType":"StructuredDocumentation","src":"947:147:12","text":" @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":1363,"name":"ApprovalForAll","nameLocation":"1105:14:12","nodeType":"EventDefinition","parameters":{"id":1362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1357,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"1136:7:12","nodeType":"VariableDeclaration","scope":1363,"src":"1120:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1356,"name":"address","nodeType":"ElementaryTypeName","src":"1120:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1359,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1161:8:12","nodeType":"VariableDeclaration","scope":1363,"src":"1145:24:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1358,"name":"address","nodeType":"ElementaryTypeName","src":"1145:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1361,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"1176:8:12","nodeType":"VariableDeclaration","scope":1363,"src":"1171:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1360,"name":"bool","nodeType":"ElementaryTypeName","src":"1171:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1119:66:12"},"src":"1099:87:12"},{"anonymous":false,"documentation":{"id":1364,"nodeType":"StructuredDocumentation","src":"1192:343:12","text":" @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}."},"eventSelector":"6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b","id":1370,"name":"URI","nameLocation":"1546:3:12","nodeType":"EventDefinition","parameters":{"id":1369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1366,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1557:5:12","nodeType":"VariableDeclaration","scope":1370,"src":"1550:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1365,"name":"string","nodeType":"ElementaryTypeName","src":"1550:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1368,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"1580:2:12","nodeType":"VariableDeclaration","scope":1370,"src":"1564:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1367,"name":"uint256","nodeType":"ElementaryTypeName","src":"1564:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1549:34:12"},"src":"1540:44:12"},{"documentation":{"id":1371,"nodeType":"StructuredDocumentation","src":"1590:90:12","text":" @dev Returns the value of tokens of token type `id` owned by `account`."},"functionSelector":"00fdd58e","id":1380,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1694:9:12","nodeType":"FunctionDefinition","parameters":{"id":1376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1373,"mutability":"mutable","name":"account","nameLocation":"1712:7:12","nodeType":"VariableDeclaration","scope":1380,"src":"1704:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1372,"name":"address","nodeType":"ElementaryTypeName","src":"1704:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1375,"mutability":"mutable","name":"id","nameLocation":"1729:2:12","nodeType":"VariableDeclaration","scope":1380,"src":"1721:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1374,"name":"uint256","nodeType":"ElementaryTypeName","src":"1721:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1703:29:12"},"returnParameters":{"id":1379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1380,"src":"1756:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1377,"name":"uint256","nodeType":"ElementaryTypeName","src":"1756:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1755:9:12"},"scope":1442,"src":"1685:80:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1381,"nodeType":"StructuredDocumentation","src":"1771:188:12","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length."},"functionSelector":"4e1273f4","id":1393,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOfBatch","nameLocation":"1973:14:12","nodeType":"FunctionDefinition","parameters":{"id":1388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1384,"mutability":"mutable","name":"accounts","nameLocation":"2016:8:12","nodeType":"VariableDeclaration","scope":1393,"src":"1997:27:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1382,"name":"address","nodeType":"ElementaryTypeName","src":"1997:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1383,"nodeType":"ArrayTypeName","src":"1997:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":1387,"mutability":"mutable","name":"ids","nameLocation":"2053:3:12","nodeType":"VariableDeclaration","scope":1393,"src":"2034:22:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1385,"name":"uint256","nodeType":"ElementaryTypeName","src":"2034:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1386,"nodeType":"ArrayTypeName","src":"2034:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1987:75:12"},"returnParameters":{"id":1392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1393,"src":"2086:16:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1389,"name":"uint256","nodeType":"ElementaryTypeName","src":"2086:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1390,"nodeType":"ArrayTypeName","src":"2086:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2085:18:12"},"scope":1442,"src":"1964:140:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1394,"nodeType":"StructuredDocumentation","src":"2110:254:12","text":" @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the zero address."},"functionSelector":"a22cb465","id":1401,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"2378:17:12","nodeType":"FunctionDefinition","parameters":{"id":1399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1396,"mutability":"mutable","name":"operator","nameLocation":"2404:8:12","nodeType":"VariableDeclaration","scope":1401,"src":"2396:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1395,"name":"address","nodeType":"ElementaryTypeName","src":"2396:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1398,"mutability":"mutable","name":"approved","nameLocation":"2419:8:12","nodeType":"VariableDeclaration","scope":1401,"src":"2414:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1397,"name":"bool","nodeType":"ElementaryTypeName","src":"2414:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2395:33:12"},"returnParameters":{"id":1400,"nodeType":"ParameterList","parameters":[],"src":"2437:0:12"},"scope":1442,"src":"2369:69:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1402,"nodeType":"StructuredDocumentation","src":"2444:135:12","text":" @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}."},"functionSelector":"e985e9c5","id":1411,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"2593:16:12","nodeType":"FunctionDefinition","parameters":{"id":1407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1404,"mutability":"mutable","name":"account","nameLocation":"2618:7:12","nodeType":"VariableDeclaration","scope":1411,"src":"2610:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1403,"name":"address","nodeType":"ElementaryTypeName","src":"2610:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1406,"mutability":"mutable","name":"operator","nameLocation":"2635:8:12","nodeType":"VariableDeclaration","scope":1411,"src":"2627:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1405,"name":"address","nodeType":"ElementaryTypeName","src":"2627:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2609:35:12"},"returnParameters":{"id":1410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1409,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1411,"src":"2668:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1408,"name":"bool","nodeType":"ElementaryTypeName","src":"2668:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2667:6:12"},"scope":1442,"src":"2584:90:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1412,"nodeType":"StructuredDocumentation","src":"2680:927:12","text":" @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.\n WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver.\n Ensure to follow the checks-effects-interactions pattern and consider employing\n reentrancy guards when interacting with untrusted contracts.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `value` amount.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."},"functionSelector":"f242432a","id":1425,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"3621:16:12","nodeType":"FunctionDefinition","parameters":{"id":1423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1414,"mutability":"mutable","name":"from","nameLocation":"3646:4:12","nodeType":"VariableDeclaration","scope":1425,"src":"3638:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1413,"name":"address","nodeType":"ElementaryTypeName","src":"3638:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1416,"mutability":"mutable","name":"to","nameLocation":"3660:2:12","nodeType":"VariableDeclaration","scope":1425,"src":"3652:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1415,"name":"address","nodeType":"ElementaryTypeName","src":"3652:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1418,"mutability":"mutable","name":"id","nameLocation":"3672:2:12","nodeType":"VariableDeclaration","scope":1425,"src":"3664:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1417,"name":"uint256","nodeType":"ElementaryTypeName","src":"3664:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1420,"mutability":"mutable","name":"value","nameLocation":"3684:5:12","nodeType":"VariableDeclaration","scope":1425,"src":"3676:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1419,"name":"uint256","nodeType":"ElementaryTypeName","src":"3676:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1422,"mutability":"mutable","name":"data","nameLocation":"3706:4:12","nodeType":"VariableDeclaration","scope":1425,"src":"3691:19:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1421,"name":"bytes","nodeType":"ElementaryTypeName","src":"3691:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3637:74:12"},"returnParameters":{"id":1424,"nodeType":"ParameterList","parameters":[],"src":"3720:0:12"},"scope":1442,"src":"3612:109:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1426,"nodeType":"StructuredDocumentation","src":"3727:831:12","text":" @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n WARNING: This function can potentially allow a reentrancy attack when transferring tokens\n to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver.\n Ensure to follow the checks-effects-interactions pattern and consider employing\n reentrancy guards when interacting with untrusted contracts.\n Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments.\n Requirements:\n - `ids` and `values` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."},"functionSelector":"2eb2c2d6","id":1441,"implemented":false,"kind":"function","modifiers":[],"name":"safeBatchTransferFrom","nameLocation":"4572:21:12","nodeType":"FunctionDefinition","parameters":{"id":1439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1428,"mutability":"mutable","name":"from","nameLocation":"4611:4:12","nodeType":"VariableDeclaration","scope":1441,"src":"4603:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1427,"name":"address","nodeType":"ElementaryTypeName","src":"4603:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1430,"mutability":"mutable","name":"to","nameLocation":"4633:2:12","nodeType":"VariableDeclaration","scope":1441,"src":"4625:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1429,"name":"address","nodeType":"ElementaryTypeName","src":"4625:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1433,"mutability":"mutable","name":"ids","nameLocation":"4664:3:12","nodeType":"VariableDeclaration","scope":1441,"src":"4645:22:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1431,"name":"uint256","nodeType":"ElementaryTypeName","src":"4645:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1432,"nodeType":"ArrayTypeName","src":"4645:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1436,"mutability":"mutable","name":"values","nameLocation":"4696:6:12","nodeType":"VariableDeclaration","scope":1441,"src":"4677:25:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1434,"name":"uint256","nodeType":"ElementaryTypeName","src":"4677:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1435,"nodeType":"ArrayTypeName","src":"4677:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1438,"mutability":"mutable","name":"data","nameLocation":"4727:4:12","nodeType":"VariableDeclaration","scope":1441,"src":"4712:19:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1437,"name":"bytes","nodeType":"ElementaryTypeName","src":"4712:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4593:144:12"},"returnParameters":{"id":1440,"nodeType":"ParameterList","parameters":[],"src":"4746:0:12"},"scope":1442,"src":"4563:184:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1443,"src":"337:4412:12","usedErrors":[],"usedEvents":[1339,1354,1363,1370]}],"src":"110:4640:12"},"id":12},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[1520]},"id":1521,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1444,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:13"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":1445,"nodeType":"StructuredDocumentation","src":"132:71:13","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":1520,"linearizedBaseContracts":[1520],"name":"IERC20","nameLocation":"214:6:13","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1446,"nodeType":"StructuredDocumentation","src":"227:158:13","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":1454,"name":"Transfer","nameLocation":"396:8:13","nodeType":"EventDefinition","parameters":{"id":1453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1448,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"421:4:13","nodeType":"VariableDeclaration","scope":1454,"src":"405:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1447,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1450,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"443:2:13","nodeType":"VariableDeclaration","scope":1454,"src":"427:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1449,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1452,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"455:5:13","nodeType":"VariableDeclaration","scope":1454,"src":"447:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1451,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"404:57:13"},"src":"390:72:13"},{"anonymous":false,"documentation":{"id":1455,"nodeType":"StructuredDocumentation","src":"468:148:13","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":1463,"name":"Approval","nameLocation":"627:8:13","nodeType":"EventDefinition","parameters":{"id":1462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1457,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"652:5:13","nodeType":"VariableDeclaration","scope":1463,"src":"636:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1456,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1459,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"675:7:13","nodeType":"VariableDeclaration","scope":1463,"src":"659:23:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1458,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1461,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"692:5:13","nodeType":"VariableDeclaration","scope":1463,"src":"684:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1460,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:63:13"},"src":"621:78:13"},{"documentation":{"id":1464,"nodeType":"StructuredDocumentation","src":"705:65:13","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":1469,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"784:11:13","nodeType":"FunctionDefinition","parameters":{"id":1465,"nodeType":"ParameterList","parameters":[],"src":"795:2:13"},"returnParameters":{"id":1468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1467,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1469,"src":"821:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1466,"name":"uint256","nodeType":"ElementaryTypeName","src":"821:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"820:9:13"},"scope":1520,"src":"775:55:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1470,"nodeType":"StructuredDocumentation","src":"836:71:13","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":1477,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:13","nodeType":"FunctionDefinition","parameters":{"id":1473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1472,"mutability":"mutable","name":"account","nameLocation":"939:7:13","nodeType":"VariableDeclaration","scope":1477,"src":"931:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1471,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:13"},"returnParameters":{"id":1476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1477,"src":"971:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1474,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:13"},"scope":1520,"src":"912:68:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1478,"nodeType":"StructuredDocumentation","src":"986:213:13","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":1487,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:13","nodeType":"FunctionDefinition","parameters":{"id":1483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1480,"mutability":"mutable","name":"to","nameLocation":"1230:2:13","nodeType":"VariableDeclaration","scope":1487,"src":"1222:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1479,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1482,"mutability":"mutable","name":"value","nameLocation":"1242:5:13","nodeType":"VariableDeclaration","scope":1487,"src":"1234:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1481,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:27:13"},"returnParameters":{"id":1486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1485,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1487,"src":"1267:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1484,"name":"bool","nodeType":"ElementaryTypeName","src":"1267:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1266:6:13"},"scope":1520,"src":"1204:69:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1488,"nodeType":"StructuredDocumentation","src":"1279:264:13","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":1497,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1557:9:13","nodeType":"FunctionDefinition","parameters":{"id":1493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1490,"mutability":"mutable","name":"owner","nameLocation":"1575:5:13","nodeType":"VariableDeclaration","scope":1497,"src":"1567:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1489,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1492,"mutability":"mutable","name":"spender","nameLocation":"1590:7:13","nodeType":"VariableDeclaration","scope":1497,"src":"1582:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1491,"name":"address","nodeType":"ElementaryTypeName","src":"1582:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1566:32:13"},"returnParameters":{"id":1496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1495,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1497,"src":"1622:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1621:9:13"},"scope":1520,"src":"1548:83:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1498,"nodeType":"StructuredDocumentation","src":"1637:667:13","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":1507,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2318:7:13","nodeType":"FunctionDefinition","parameters":{"id":1503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1500,"mutability":"mutable","name":"spender","nameLocation":"2334:7:13","nodeType":"VariableDeclaration","scope":1507,"src":"2326:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1499,"name":"address","nodeType":"ElementaryTypeName","src":"2326:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1502,"mutability":"mutable","name":"value","nameLocation":"2351:5:13","nodeType":"VariableDeclaration","scope":1507,"src":"2343:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1501,"name":"uint256","nodeType":"ElementaryTypeName","src":"2343:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:32:13"},"returnParameters":{"id":1506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1505,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1507,"src":"2376:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1504,"name":"bool","nodeType":"ElementaryTypeName","src":"2376:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2375:6:13"},"scope":1520,"src":"2309:73:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1508,"nodeType":"StructuredDocumentation","src":"2388:297:13","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":1519,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2699:12:13","nodeType":"FunctionDefinition","parameters":{"id":1515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1510,"mutability":"mutable","name":"from","nameLocation":"2720:4:13","nodeType":"VariableDeclaration","scope":1519,"src":"2712:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1509,"name":"address","nodeType":"ElementaryTypeName","src":"2712:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1512,"mutability":"mutable","name":"to","nameLocation":"2734:2:13","nodeType":"VariableDeclaration","scope":1519,"src":"2726:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1511,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1514,"mutability":"mutable","name":"value","nameLocation":"2746:5:13","nodeType":"VariableDeclaration","scope":1519,"src":"2738:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1513,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2711:41:13"},"returnParameters":{"id":1518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1517,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1519,"src":"2771:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1516,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:13"},"scope":1520,"src":"2690:87:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1521,"src":"204:2575:13","usedErrors":[],"usedEvents":[1454,1463]}],"src":"106:2674:13"},"id":13},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[2085],"IERC721":[1637]},"id":1638,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1522,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"108:24:14"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":1524,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1638,"sourceUnit":2086,"src":"134:62:14","symbolAliases":[{"foreign":{"id":1523,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2085,"src":"142:7:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1526,"name":"IERC165","nameLocations":["288:7:14"],"nodeType":"IdentifierPath","referencedDeclaration":2085,"src":"288:7:14"},"id":1527,"nodeType":"InheritanceSpecifier","src":"288:7:14"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":1525,"nodeType":"StructuredDocumentation","src":"198:68:14","text":" @dev Required interface of an ERC-721 compliant contract."},"fullyImplemented":false,"id":1637,"linearizedBaseContracts":[1637,2085],"name":"IERC721","nameLocation":"277:7:14","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1528,"nodeType":"StructuredDocumentation","src":"302:88:14","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":1536,"name":"Transfer","nameLocation":"401:8:14","nodeType":"EventDefinition","parameters":{"id":1535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1530,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"426:4:14","nodeType":"VariableDeclaration","scope":1536,"src":"410:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1529,"name":"address","nodeType":"ElementaryTypeName","src":"410:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1532,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"448:2:14","nodeType":"VariableDeclaration","scope":1536,"src":"432:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1531,"name":"address","nodeType":"ElementaryTypeName","src":"432:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1534,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"468:7:14","nodeType":"VariableDeclaration","scope":1536,"src":"452:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1533,"name":"uint256","nodeType":"ElementaryTypeName","src":"452:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"409:67:14"},"src":"395:82:14"},{"anonymous":false,"documentation":{"id":1537,"nodeType":"StructuredDocumentation","src":"483:94:14","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":1545,"name":"Approval","nameLocation":"588:8:14","nodeType":"EventDefinition","parameters":{"id":1544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1539,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"613:5:14","nodeType":"VariableDeclaration","scope":1545,"src":"597:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1538,"name":"address","nodeType":"ElementaryTypeName","src":"597:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1541,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"636:8:14","nodeType":"VariableDeclaration","scope":1545,"src":"620:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1540,"name":"address","nodeType":"ElementaryTypeName","src":"620:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1543,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"662:7:14","nodeType":"VariableDeclaration","scope":1545,"src":"646:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1542,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"596:74:14"},"src":"582:89:14"},{"anonymous":false,"documentation":{"id":1546,"nodeType":"StructuredDocumentation","src":"677:117:14","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":1554,"name":"ApprovalForAll","nameLocation":"805:14:14","nodeType":"EventDefinition","parameters":{"id":1553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1548,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"836:5:14","nodeType":"VariableDeclaration","scope":1554,"src":"820:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1547,"name":"address","nodeType":"ElementaryTypeName","src":"820:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1550,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"859:8:14","nodeType":"VariableDeclaration","scope":1554,"src":"843:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1549,"name":"address","nodeType":"ElementaryTypeName","src":"843:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1552,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"874:8:14","nodeType":"VariableDeclaration","scope":1554,"src":"869:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1551,"name":"bool","nodeType":"ElementaryTypeName","src":"869:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"819:64:14"},"src":"799:85:14"},{"documentation":{"id":1555,"nodeType":"StructuredDocumentation","src":"890:76:14","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":1562,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"980:9:14","nodeType":"FunctionDefinition","parameters":{"id":1558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1557,"mutability":"mutable","name":"owner","nameLocation":"998:5:14","nodeType":"VariableDeclaration","scope":1562,"src":"990:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1556,"name":"address","nodeType":"ElementaryTypeName","src":"990:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"989:15:14"},"returnParameters":{"id":1561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1560,"mutability":"mutable","name":"balance","nameLocation":"1036:7:14","nodeType":"VariableDeclaration","scope":1562,"src":"1028:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1559,"name":"uint256","nodeType":"ElementaryTypeName","src":"1028:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1027:17:14"},"scope":1637,"src":"971:74:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1563,"nodeType":"StructuredDocumentation","src":"1051:131:14","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":1570,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1196:7:14","nodeType":"FunctionDefinition","parameters":{"id":1566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1565,"mutability":"mutable","name":"tokenId","nameLocation":"1212:7:14","nodeType":"VariableDeclaration","scope":1570,"src":"1204:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1564,"name":"uint256","nodeType":"ElementaryTypeName","src":"1204:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1203:17:14"},"returnParameters":{"id":1569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1568,"mutability":"mutable","name":"owner","nameLocation":"1252:5:14","nodeType":"VariableDeclaration","scope":1570,"src":"1244:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1567,"name":"address","nodeType":"ElementaryTypeName","src":"1244:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1243:15:14"},"scope":1637,"src":"1187:72:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1571,"nodeType":"StructuredDocumentation","src":"1265:565:14","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n   a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":1582,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1844:16:14","nodeType":"FunctionDefinition","parameters":{"id":1580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1573,"mutability":"mutable","name":"from","nameLocation":"1869:4:14","nodeType":"VariableDeclaration","scope":1582,"src":"1861:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1572,"name":"address","nodeType":"ElementaryTypeName","src":"1861:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1575,"mutability":"mutable","name":"to","nameLocation":"1883:2:14","nodeType":"VariableDeclaration","scope":1582,"src":"1875:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1574,"name":"address","nodeType":"ElementaryTypeName","src":"1875:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1577,"mutability":"mutable","name":"tokenId","nameLocation":"1895:7:14","nodeType":"VariableDeclaration","scope":1582,"src":"1887:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1576,"name":"uint256","nodeType":"ElementaryTypeName","src":"1887:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1579,"mutability":"mutable","name":"data","nameLocation":"1919:4:14","nodeType":"VariableDeclaration","scope":1582,"src":"1904:19:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1578,"name":"bytes","nodeType":"ElementaryTypeName","src":"1904:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1860:64:14"},"returnParameters":{"id":1581,"nodeType":"ParameterList","parameters":[],"src":"1933:0:14"},"scope":1637,"src":"1835:99:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1583,"nodeType":"StructuredDocumentation","src":"1940:706:14","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC-721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n   {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n   a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":1592,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2660:16:14","nodeType":"FunctionDefinition","parameters":{"id":1590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1585,"mutability":"mutable","name":"from","nameLocation":"2685:4:14","nodeType":"VariableDeclaration","scope":1592,"src":"2677:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1584,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1587,"mutability":"mutable","name":"to","nameLocation":"2699:2:14","nodeType":"VariableDeclaration","scope":1592,"src":"2691:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1586,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1589,"mutability":"mutable","name":"tokenId","nameLocation":"2711:7:14","nodeType":"VariableDeclaration","scope":1592,"src":"2703:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1588,"name":"uint256","nodeType":"ElementaryTypeName","src":"2703:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:14"},"returnParameters":{"id":1591,"nodeType":"ParameterList","parameters":[],"src":"2728:0:14"},"scope":1637,"src":"2651:78:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1593,"nodeType":"StructuredDocumentation","src":"2735:733:14","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":1602,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3482:12:14","nodeType":"FunctionDefinition","parameters":{"id":1600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1595,"mutability":"mutable","name":"from","nameLocation":"3503:4:14","nodeType":"VariableDeclaration","scope":1602,"src":"3495:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1594,"name":"address","nodeType":"ElementaryTypeName","src":"3495:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1597,"mutability":"mutable","name":"to","nameLocation":"3517:2:14","nodeType":"VariableDeclaration","scope":1602,"src":"3509:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1596,"name":"address","nodeType":"ElementaryTypeName","src":"3509:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1599,"mutability":"mutable","name":"tokenId","nameLocation":"3529:7:14","nodeType":"VariableDeclaration","scope":1602,"src":"3521:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1598,"name":"uint256","nodeType":"ElementaryTypeName","src":"3521:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3494:43:14"},"returnParameters":{"id":1601,"nodeType":"ParameterList","parameters":[],"src":"3546:0:14"},"scope":1637,"src":"3473:74:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1603,"nodeType":"StructuredDocumentation","src":"3553:452:14","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":1610,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4019:7:14","nodeType":"FunctionDefinition","parameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1605,"mutability":"mutable","name":"to","nameLocation":"4035:2:14","nodeType":"VariableDeclaration","scope":1610,"src":"4027:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1604,"name":"address","nodeType":"ElementaryTypeName","src":"4027:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1607,"mutability":"mutable","name":"tokenId","nameLocation":"4047:7:14","nodeType":"VariableDeclaration","scope":1610,"src":"4039:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1606,"name":"uint256","nodeType":"ElementaryTypeName","src":"4039:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4026:29:14"},"returnParameters":{"id":1609,"nodeType":"ParameterList","parameters":[],"src":"4064:0:14"},"scope":1637,"src":"4010:55:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"4071:315:14","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":1618,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4400:17:14","nodeType":"FunctionDefinition","parameters":{"id":1616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1613,"mutability":"mutable","name":"operator","nameLocation":"4426:8:14","nodeType":"VariableDeclaration","scope":1618,"src":"4418:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1612,"name":"address","nodeType":"ElementaryTypeName","src":"4418:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1615,"mutability":"mutable","name":"approved","nameLocation":"4441:8:14","nodeType":"VariableDeclaration","scope":1618,"src":"4436:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1614,"name":"bool","nodeType":"ElementaryTypeName","src":"4436:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4417:33:14"},"returnParameters":{"id":1617,"nodeType":"ParameterList","parameters":[],"src":"4459:0:14"},"scope":1637,"src":"4391:69:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1619,"nodeType":"StructuredDocumentation","src":"4466:139:14","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":1626,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4619:11:14","nodeType":"FunctionDefinition","parameters":{"id":1622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1621,"mutability":"mutable","name":"tokenId","nameLocation":"4639:7:14","nodeType":"VariableDeclaration","scope":1626,"src":"4631:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1620,"name":"uint256","nodeType":"ElementaryTypeName","src":"4631:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4630:17:14"},"returnParameters":{"id":1625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1624,"mutability":"mutable","name":"operator","nameLocation":"4679:8:14","nodeType":"VariableDeclaration","scope":1626,"src":"4671:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1623,"name":"address","nodeType":"ElementaryTypeName","src":"4671:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4670:18:14"},"scope":1637,"src":"4610:79:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1627,"nodeType":"StructuredDocumentation","src":"4695:138:14","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":1636,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4847:16:14","nodeType":"FunctionDefinition","parameters":{"id":1632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1629,"mutability":"mutable","name":"owner","nameLocation":"4872:5:14","nodeType":"VariableDeclaration","scope":1636,"src":"4864:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1628,"name":"address","nodeType":"ElementaryTypeName","src":"4864:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1631,"mutability":"mutable","name":"operator","nameLocation":"4887:8:14","nodeType":"VariableDeclaration","scope":1636,"src":"4879:16:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1630,"name":"address","nodeType":"ElementaryTypeName","src":"4879:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4863:33:14"},"returnParameters":{"id":1635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1636,"src":"4920:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1633,"name":"bool","nodeType":"ElementaryTypeName","src":"4920:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4919:6:14"},"scope":1637,"src":"4838:88:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1638,"src":"267:4661:14","usedErrors":[],"usedEvents":[1536,1545,1554]}],"src":"108:4821:14"},"id":14},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[1897],"Errors":[1949]},"id":1898,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1639,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:15"},{"absolutePath":"@openzeppelin/contracts/utils/Errors.sol","file":"./Errors.sol","id":1641,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1898,"sourceUnit":1950,"src":"127:36:15","symbolAliases":[{"foreign":{"id":1640,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"135:6:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":1642,"nodeType":"StructuredDocumentation","src":"165:67:15","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1897,"linearizedBaseContracts":[1897],"name":"Address","nameLocation":"241:7:15","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1643,"nodeType":"StructuredDocumentation","src":"255:75:15","text":" @dev There's no code at `target` (it is not a contract)."},"errorSelector":"9996b315","id":1647,"name":"AddressEmptyCode","nameLocation":"341:16:15","nodeType":"ErrorDefinition","parameters":{"id":1646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1645,"mutability":"mutable","name":"target","nameLocation":"366:6:15","nodeType":"VariableDeclaration","scope":1647,"src":"358:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1644,"name":"address","nodeType":"ElementaryTypeName","src":"358:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"357:16:15"},"src":"335:39:15"},{"body":{"id":1694,"nodeType":"Block","src":"1361:294:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1657,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1383:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1897","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1897","typeString":"library Address"}],"id":1656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1375:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1655,"name":"address","nodeType":"ElementaryTypeName","src":"1375:7:15","typeDescriptions":{}}},"id":1658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1375:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1389:7:15","memberName":"balance","nodeType":"MemberAccess","src":"1375:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1660,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"1399:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1375:30:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1674,"nodeType":"IfStatement","src":"1371:125:15","trueBody":{"id":1673,"nodeType":"Block","src":"1407:89:15","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":1667,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1463:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1897","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1897","typeString":"library Address"}],"id":1666,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1455:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1665,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:15","typeDescriptions":{}}},"id":1668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1455:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1469:7:15","memberName":"balance","nodeType":"MemberAccess","src":"1455:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1670,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"1478:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1662,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"1428:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1949_$","typeString":"type(library Errors)"}},"id":1664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:19:15","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":1937,"src":"1428:26:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1428:57:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1672,"nodeType":"RevertStatement","src":"1421:64:15"}]}},{"assignments":[1676,1678],"declarations":[{"constant":false,"id":1676,"mutability":"mutable","name":"success","nameLocation":"1512:7:15","nodeType":"VariableDeclaration","scope":1694,"src":"1507:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1675,"name":"bool","nodeType":"ElementaryTypeName","src":"1507:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1678,"mutability":"mutable","name":"returndata","nameLocation":"1534:10:15","nodeType":"VariableDeclaration","scope":1694,"src":"1521:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1677,"name":"bytes","nodeType":"ElementaryTypeName","src":"1521:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1685,"initialValue":{"arguments":[{"hexValue":"","id":1683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1578:2:15","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":1679,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1650,"src":"1548:9:15","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1558:4:15","memberName":"call","nodeType":"MemberAccess","src":"1548:14:15","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":1682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1681,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1652,"src":"1570:6:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1548:29:15","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":1684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1548:33:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1506:75:15"},{"condition":{"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1595:8:15","subExpression":{"id":1686,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1676,"src":"1596:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1693,"nodeType":"IfStatement","src":"1591:58:15","trueBody":{"id":1692,"nodeType":"Block","src":"1605:44:15","statements":[{"expression":{"arguments":[{"id":1689,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1678,"src":"1627:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1688,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"1619:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1619:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1691,"nodeType":"ExpressionStatement","src":"1619:19:15"}]}}]},"documentation":{"id":1648,"nodeType":"StructuredDocumentation","src":"380:905:15","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":1695,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"1299:9:15","nodeType":"FunctionDefinition","parameters":{"id":1653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1650,"mutability":"mutable","name":"recipient","nameLocation":"1325:9:15","nodeType":"VariableDeclaration","scope":1695,"src":"1309:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1649,"name":"address","nodeType":"ElementaryTypeName","src":"1309:15:15","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1652,"mutability":"mutable","name":"amount","nameLocation":"1344:6:15","nodeType":"VariableDeclaration","scope":1695,"src":"1336:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1651,"name":"uint256","nodeType":"ElementaryTypeName","src":"1336:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1308:43:15"},"returnParameters":{"id":1654,"nodeType":"ParameterList","parameters":[],"src":"1361:0:15"},"scope":1897,"src":"1290:365:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1711,"nodeType":"Block","src":"2589:62:15","statements":[{"expression":{"arguments":[{"id":1706,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1698,"src":"2628:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1707,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1700,"src":"2636:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2642:1:15","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":1705,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1762,"src":"2606:21:15","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":1709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2606:38:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1704,"id":1710,"nodeType":"Return","src":"2599:45:15"}]},"documentation":{"id":1696,"nodeType":"StructuredDocumentation","src":"1661:834:15","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 {Errors.FailedCall} 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":1712,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"2509:12:15","nodeType":"FunctionDefinition","parameters":{"id":1701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1698,"mutability":"mutable","name":"target","nameLocation":"2530:6:15","nodeType":"VariableDeclaration","scope":1712,"src":"2522:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1697,"name":"address","nodeType":"ElementaryTypeName","src":"2522:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1700,"mutability":"mutable","name":"data","nameLocation":"2551:4:15","nodeType":"VariableDeclaration","scope":1712,"src":"2538:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1699,"name":"bytes","nodeType":"ElementaryTypeName","src":"2538:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2521:35:15"},"returnParameters":{"id":1704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1712,"src":"2575:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1702,"name":"bytes","nodeType":"ElementaryTypeName","src":"2575:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2574:14:15"},"scope":1897,"src":"2500:151:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1761,"nodeType":"Block","src":"3088:294:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1726,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3110:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1897","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1897","typeString":"library Address"}],"id":1725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3102:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1724,"name":"address","nodeType":"ElementaryTypeName","src":"3102:7:15","typeDescriptions":{}}},"id":1727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3102:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3116:7:15","memberName":"balance","nodeType":"MemberAccess","src":"3102:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1729,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"3126:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3102:29:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1743,"nodeType":"IfStatement","src":"3098:123:15","trueBody":{"id":1742,"nodeType":"Block","src":"3133:88:15","statements":[{"errorCall":{"arguments":[{"expression":{"arguments":[{"id":1736,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3189:4:15","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1897","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1897","typeString":"library Address"}],"id":1735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3181:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1734,"name":"address","nodeType":"ElementaryTypeName","src":"3181:7:15","typeDescriptions":{}}},"id":1737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3181:13:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3195:7:15","memberName":"balance","nodeType":"MemberAccess","src":"3181:21:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1739,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"3204:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1731,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"3154:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1949_$","typeString":"type(library Errors)"}},"id":1733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3161:19:15","memberName":"InsufficientBalance","nodeType":"MemberAccess","referencedDeclaration":1937,"src":"3154:26:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3154:56:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1741,"nodeType":"RevertStatement","src":"3147:63:15"}]}},{"assignments":[1745,1747],"declarations":[{"constant":false,"id":1745,"mutability":"mutable","name":"success","nameLocation":"3236:7:15","nodeType":"VariableDeclaration","scope":1761,"src":"3231:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1744,"name":"bool","nodeType":"ElementaryTypeName","src":"3231:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1747,"mutability":"mutable","name":"returndata","nameLocation":"3258:10:15","nodeType":"VariableDeclaration","scope":1761,"src":"3245:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1746,"name":"bytes","nodeType":"ElementaryTypeName","src":"3245:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1754,"initialValue":{"arguments":[{"id":1752,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1717,"src":"3298:4:15","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":1748,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"3272:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3279:4:15","memberName":"call","nodeType":"MemberAccess","src":"3272:11:15","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":1751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1750,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1719,"src":"3291:5:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3272:25:15","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":1753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3272:31:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3230:73:15"},{"expression":{"arguments":[{"id":1756,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1715,"src":"3347:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1757,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"3355:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1758,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"3364:10:15","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":1755,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1854,"src":"3320:26:15","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":1759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3320:55:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1723,"id":1760,"nodeType":"Return","src":"3313:62:15"}]},"documentation":{"id":1713,"nodeType":"StructuredDocumentation","src":"2657:313:15","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":1762,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"2984:21:15","nodeType":"FunctionDefinition","parameters":{"id":1720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1715,"mutability":"mutable","name":"target","nameLocation":"3014:6:15","nodeType":"VariableDeclaration","scope":1762,"src":"3006:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1714,"name":"address","nodeType":"ElementaryTypeName","src":"3006:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1717,"mutability":"mutable","name":"data","nameLocation":"3035:4:15","nodeType":"VariableDeclaration","scope":1762,"src":"3022:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1716,"name":"bytes","nodeType":"ElementaryTypeName","src":"3022:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1719,"mutability":"mutable","name":"value","nameLocation":"3049:5:15","nodeType":"VariableDeclaration","scope":1762,"src":"3041:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1718,"name":"uint256","nodeType":"ElementaryTypeName","src":"3041:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3005:50:15"},"returnParameters":{"id":1723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1722,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1762,"src":"3074:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1721,"name":"bytes","nodeType":"ElementaryTypeName","src":"3074:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3073:14:15"},"scope":1897,"src":"2975:407:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1787,"nodeType":"Block","src":"3621:154:15","statements":[{"assignments":[1773,1775],"declarations":[{"constant":false,"id":1773,"mutability":"mutable","name":"success","nameLocation":"3637:7:15","nodeType":"VariableDeclaration","scope":1787,"src":"3632:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1772,"name":"bool","nodeType":"ElementaryTypeName","src":"3632:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1775,"mutability":"mutable","name":"returndata","nameLocation":"3659:10:15","nodeType":"VariableDeclaration","scope":1787,"src":"3646:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1774,"name":"bytes","nodeType":"ElementaryTypeName","src":"3646:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1780,"initialValue":{"arguments":[{"id":1778,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"3691:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1776,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1765,"src":"3673:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3680:10:15","memberName":"staticcall","nodeType":"MemberAccess","src":"3673:17:15","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":1779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3673:23:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3631:65:15"},{"expression":{"arguments":[{"id":1782,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1765,"src":"3740:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1783,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1773,"src":"3748:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1784,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"3757:10:15","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":1781,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1854,"src":"3713:26:15","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":1785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3713:55:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1771,"id":1786,"nodeType":"Return","src":"3706:62:15"}]},"documentation":{"id":1763,"nodeType":"StructuredDocumentation","src":"3388:128:15","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call."},"id":1788,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"3530:18:15","nodeType":"FunctionDefinition","parameters":{"id":1768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1765,"mutability":"mutable","name":"target","nameLocation":"3557:6:15","nodeType":"VariableDeclaration","scope":1788,"src":"3549:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1764,"name":"address","nodeType":"ElementaryTypeName","src":"3549:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1767,"mutability":"mutable","name":"data","nameLocation":"3578:4:15","nodeType":"VariableDeclaration","scope":1788,"src":"3565:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1766,"name":"bytes","nodeType":"ElementaryTypeName","src":"3565:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3548:35:15"},"returnParameters":{"id":1771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1770,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1788,"src":"3607:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1769,"name":"bytes","nodeType":"ElementaryTypeName","src":"3607:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3606:14:15"},"scope":1897,"src":"3521:254:15","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1813,"nodeType":"Block","src":"4013:156:15","statements":[{"assignments":[1799,1801],"declarations":[{"constant":false,"id":1799,"mutability":"mutable","name":"success","nameLocation":"4029:7:15","nodeType":"VariableDeclaration","scope":1813,"src":"4024:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1798,"name":"bool","nodeType":"ElementaryTypeName","src":"4024:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1801,"mutability":"mutable","name":"returndata","nameLocation":"4051:10:15","nodeType":"VariableDeclaration","scope":1813,"src":"4038:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1800,"name":"bytes","nodeType":"ElementaryTypeName","src":"4038:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1806,"initialValue":{"arguments":[{"id":1804,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1793,"src":"4085:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1802,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"4065:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4072:12:15","memberName":"delegatecall","nodeType":"MemberAccess","src":"4065:19:15","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":1805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4065:25:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4023:67:15"},{"expression":{"arguments":[{"id":1808,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1791,"src":"4134:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1809,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1799,"src":"4142:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1810,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"4151:10:15","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":1807,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1854,"src":"4107:26:15","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":1811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4107:55:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1797,"id":1812,"nodeType":"Return","src":"4100:62:15"}]},"documentation":{"id":1789,"nodeType":"StructuredDocumentation","src":"3781:130:15","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call."},"id":1814,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"3925:20:15","nodeType":"FunctionDefinition","parameters":{"id":1794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1791,"mutability":"mutable","name":"target","nameLocation":"3954:6:15","nodeType":"VariableDeclaration","scope":1814,"src":"3946:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1790,"name":"address","nodeType":"ElementaryTypeName","src":"3946:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1793,"mutability":"mutable","name":"data","nameLocation":"3975:4:15","nodeType":"VariableDeclaration","scope":1814,"src":"3962:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1792,"name":"bytes","nodeType":"ElementaryTypeName","src":"3962:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3945:35:15"},"returnParameters":{"id":1797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1796,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1814,"src":"3999:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1795,"name":"bytes","nodeType":"ElementaryTypeName","src":"3999:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3998:14:15"},"scope":1897,"src":"3916:253:15","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1853,"nodeType":"Block","src":"4595:424:15","statements":[{"condition":{"id":1827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4609:8:15","subExpression":{"id":1826,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"4610:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1851,"nodeType":"Block","src":"4669:344:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1833,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"4857:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4868:6:15","memberName":"length","nodeType":"MemberAccess","src":"4857:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4878:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4857:22:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1837,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"4883:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4890:4:15","memberName":"code","nodeType":"MemberAccess","src":"4883:11:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4895:6:15","memberName":"length","nodeType":"MemberAccess","src":"4883:18:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4905:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4883:23:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4857:49:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1848,"nodeType":"IfStatement","src":"4853:119:15","trueBody":{"id":1847,"nodeType":"Block","src":"4908:64:15","statements":[{"errorCall":{"arguments":[{"id":1844,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1817,"src":"4950:6:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1843,"name":"AddressEmptyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"4933:16:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":1845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4933:24:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1846,"nodeType":"RevertStatement","src":"4926:31:15"}]}},{"expression":{"id":1849,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"4992:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1825,"id":1850,"nodeType":"Return","src":"4985:17:15"}]},"id":1852,"nodeType":"IfStatement","src":"4605:408:15","trueBody":{"id":1832,"nodeType":"Block","src":"4619:44:15","statements":[{"expression":{"arguments":[{"id":1829,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1821,"src":"4641:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1828,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"4633:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4633:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1831,"nodeType":"ExpressionStatement","src":"4633:19:15"}]}}]},"documentation":{"id":1815,"nodeType":"StructuredDocumentation","src":"4175:257:15","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 {Errors.FailedCall}) in case\n of an unsuccessful call."},"id":1854,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"4446:26:15","nodeType":"FunctionDefinition","parameters":{"id":1822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1817,"mutability":"mutable","name":"target","nameLocation":"4490:6:15","nodeType":"VariableDeclaration","scope":1854,"src":"4482:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1816,"name":"address","nodeType":"ElementaryTypeName","src":"4482:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1819,"mutability":"mutable","name":"success","nameLocation":"4511:7:15","nodeType":"VariableDeclaration","scope":1854,"src":"4506:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1818,"name":"bool","nodeType":"ElementaryTypeName","src":"4506:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1821,"mutability":"mutable","name":"returndata","nameLocation":"4541:10:15","nodeType":"VariableDeclaration","scope":1854,"src":"4528:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1820,"name":"bytes","nodeType":"ElementaryTypeName","src":"4528:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4472:85:15"},"returnParameters":{"id":1825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1824,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1854,"src":"4581:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1823,"name":"bytes","nodeType":"ElementaryTypeName","src":"4581:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4580:14:15"},"scope":1897,"src":"4437:582:15","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1875,"nodeType":"Block","src":"5323:122:15","statements":[{"condition":{"id":1865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5337:8:15","subExpression":{"id":1864,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1857,"src":"5338:7:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1873,"nodeType":"Block","src":"5397:42:15","statements":[{"expression":{"id":1871,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1859,"src":"5418:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1863,"id":1872,"nodeType":"Return","src":"5411:17:15"}]},"id":1874,"nodeType":"IfStatement","src":"5333:106:15","trueBody":{"id":1870,"nodeType":"Block","src":"5347:44:15","statements":[{"expression":{"arguments":[{"id":1867,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1859,"src":"5369:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1866,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1896,"src":"5361:7:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) pure"}},"id":1868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5361:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1869,"nodeType":"ExpressionStatement","src":"5361:19:15"}]}}]},"documentation":{"id":1855,"nodeType":"StructuredDocumentation","src":"5025:191:15","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 {Errors.FailedCall} error."},"id":1876,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"5230:16:15","nodeType":"FunctionDefinition","parameters":{"id":1860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1857,"mutability":"mutable","name":"success","nameLocation":"5252:7:15","nodeType":"VariableDeclaration","scope":1876,"src":"5247:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1856,"name":"bool","nodeType":"ElementaryTypeName","src":"5247:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1859,"mutability":"mutable","name":"returndata","nameLocation":"5274:10:15","nodeType":"VariableDeclaration","scope":1876,"src":"5261:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1858,"name":"bytes","nodeType":"ElementaryTypeName","src":"5261:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5246:39:15"},"returnParameters":{"id":1863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1862,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1876,"src":"5309:12:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1861,"name":"bytes","nodeType":"ElementaryTypeName","src":"5309:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5308:14:15"},"scope":1897,"src":"5221:224:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1895,"nodeType":"Block","src":"5614:432:15","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1882,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"5690:10:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5701:6:15","memberName":"length","nodeType":"MemberAccess","src":"5690:17:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5710:1:15","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5690:21:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1893,"nodeType":"Block","src":"5989:51:15","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1888,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"6010:6:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1949_$","typeString":"type(library Errors)"}},"id":1890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6017:10:15","memberName":"FailedCall","nodeType":"MemberAccess","referencedDeclaration":1940,"src":"6010:17:15","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6010:19:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1892,"nodeType":"RevertStatement","src":"6003:26:15"}]},"id":1894,"nodeType":"IfStatement","src":"5686:354:15","trueBody":{"id":1887,"nodeType":"Block","src":"5713:270:15","statements":[{"AST":{"nativeSrc":"5840:133:15","nodeType":"YulBlock","src":"5840:133:15","statements":[{"nativeSrc":"5858:40:15","nodeType":"YulVariableDeclaration","src":"5858:40:15","value":{"arguments":[{"name":"returndata","nativeSrc":"5887:10:15","nodeType":"YulIdentifier","src":"5887:10:15"}],"functionName":{"name":"mload","nativeSrc":"5881:5:15","nodeType":"YulIdentifier","src":"5881:5:15"},"nativeSrc":"5881:17:15","nodeType":"YulFunctionCall","src":"5881:17:15"},"variables":[{"name":"returndata_size","nativeSrc":"5862:15:15","nodeType":"YulTypedName","src":"5862:15:15","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"5926:2:15","nodeType":"YulLiteral","src":"5926:2:15","type":"","value":"32"},{"name":"returndata","nativeSrc":"5930:10:15","nodeType":"YulIdentifier","src":"5930:10:15"}],"functionName":{"name":"add","nativeSrc":"5922:3:15","nodeType":"YulIdentifier","src":"5922:3:15"},"nativeSrc":"5922:19:15","nodeType":"YulFunctionCall","src":"5922:19:15"},{"name":"returndata_size","nativeSrc":"5943:15:15","nodeType":"YulIdentifier","src":"5943:15:15"}],"functionName":{"name":"revert","nativeSrc":"5915:6:15","nodeType":"YulIdentifier","src":"5915:6:15"},"nativeSrc":"5915:44:15","nodeType":"YulFunctionCall","src":"5915:44:15"},"nativeSrc":"5915:44:15","nodeType":"YulExpressionStatement","src":"5915:44:15"}]},"evmVersion":"paris","externalReferences":[{"declaration":1879,"isOffset":false,"isSlot":false,"src":"5887:10:15","valueSize":1},{"declaration":1879,"isOffset":false,"isSlot":false,"src":"5930:10:15","valueSize":1}],"flags":["memory-safe"],"id":1886,"nodeType":"InlineAssembly","src":"5815:158:15"}]}}]},"documentation":{"id":1877,"nodeType":"StructuredDocumentation","src":"5451:103:15","text":" @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}."},"id":1896,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"5568:7:15","nodeType":"FunctionDefinition","parameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"returndata","nameLocation":"5589:10:15","nodeType":"VariableDeclaration","scope":1896,"src":"5576:23:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1878,"name":"bytes","nodeType":"ElementaryTypeName","src":"5576:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5575:25:15"},"returnParameters":{"id":1881,"nodeType":"ParameterList","parameters":[],"src":"5614:0:15"},"scope":1897,"src":"5559:487:15","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1898,"src":"233:5815:15","usedErrors":[1647],"usedEvents":[]}],"src":"101:5948:15"},"id":15},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[1927]},"id":1928,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1899,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:16"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1900,"nodeType":"StructuredDocumentation","src":"127:496:16","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":1927,"linearizedBaseContracts":[1927],"name":"Context","nameLocation":"642:7:16","nodeType":"ContractDefinition","nodes":[{"body":{"id":1908,"nodeType":"Block","src":"718:34:16","statements":[{"expression":{"expression":{"id":1905,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:16","memberName":"sender","nodeType":"MemberAccess","src":"735:10:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1904,"id":1907,"nodeType":"Return","src":"728:17:16"}]},"id":1909,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:16","nodeType":"FunctionDefinition","parameters":{"id":1901,"nodeType":"ParameterList","parameters":[],"src":"675:2:16"},"returnParameters":{"id":1904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1903,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1909,"src":"709:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1902,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:16"},"scope":1927,"src":"656:96:16","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1917,"nodeType":"Block","src":"825:32:16","statements":[{"expression":{"expression":{"id":1914,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:16","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:16","memberName":"data","nodeType":"MemberAccess","src":"842:8:16","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1913,"id":1916,"nodeType":"Return","src":"835:15:16"}]},"id":1918,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:16","nodeType":"FunctionDefinition","parameters":{"id":1910,"nodeType":"ParameterList","parameters":[],"src":"775:2:16"},"returnParameters":{"id":1913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1912,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1918,"src":"809:14:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1911,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:16"},"scope":1927,"src":"758:99:16","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1925,"nodeType":"Block","src":"935:25:16","statements":[{"expression":{"hexValue":"30","id":1923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1922,"id":1924,"nodeType":"Return","src":"945:8:16"}]},"id":1926,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:16","nodeType":"FunctionDefinition","parameters":{"id":1919,"nodeType":"ParameterList","parameters":[],"src":"892:2:16"},"returnParameters":{"id":1922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1921,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1926,"src":"926:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1920,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:16"},"scope":1927,"src":"863:97:16","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1928,"src":"624:338:16","usedErrors":[],"usedEvents":[]}],"src":"101:862:16"},"id":16},"@openzeppelin/contracts/utils/Errors.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Errors.sol","exportedSymbols":{"Errors":[1949]},"id":1950,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1929,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"100:24:17"},{"abstract":false,"baseContracts":[],"canonicalName":"Errors","contractDependencies":[],"contractKind":"library","documentation":{"id":1930,"nodeType":"StructuredDocumentation","src":"126:284:17","text":" @dev Collection of common custom errors used in multiple contracts\n IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n It is recommended to avoid relying on the error API for critical functionality.\n _Available since v5.1._"},"fullyImplemented":true,"id":1949,"linearizedBaseContracts":[1949],"name":"Errors","nameLocation":"419:6:17","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1931,"nodeType":"StructuredDocumentation","src":"432:94:17","text":" @dev The ETH balance of the account is not enough to perform the operation."},"errorSelector":"cf479181","id":1937,"name":"InsufficientBalance","nameLocation":"537:19:17","nodeType":"ErrorDefinition","parameters":{"id":1936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1933,"mutability":"mutable","name":"balance","nameLocation":"565:7:17","nodeType":"VariableDeclaration","scope":1937,"src":"557:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1932,"name":"uint256","nodeType":"ElementaryTypeName","src":"557:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1935,"mutability":"mutable","name":"needed","nameLocation":"582:6:17","nodeType":"VariableDeclaration","scope":1937,"src":"574:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1934,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"556:33:17"},"src":"531:59:17"},{"documentation":{"id":1938,"nodeType":"StructuredDocumentation","src":"596:89:17","text":" @dev A call to an address target failed. The target may have reverted."},"errorSelector":"d6bda275","id":1940,"name":"FailedCall","nameLocation":"696:10:17","nodeType":"ErrorDefinition","parameters":{"id":1939,"nodeType":"ParameterList","parameters":[],"src":"706:2:17"},"src":"690:19:17"},{"documentation":{"id":1941,"nodeType":"StructuredDocumentation","src":"715:46:17","text":" @dev The deployment failed."},"errorSelector":"b06ebf3d","id":1943,"name":"FailedDeployment","nameLocation":"772:16:17","nodeType":"ErrorDefinition","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[],"src":"788:2:17"},"src":"766:25:17"},{"documentation":{"id":1944,"nodeType":"StructuredDocumentation","src":"797:58:17","text":" @dev A necessary precompile is missing."},"errorSelector":"42b01bce","id":1948,"name":"MissingPrecompile","nameLocation":"866:17:17","nodeType":"ErrorDefinition","parameters":{"id":1947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1946,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1948,"src":"884:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1945,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"883:9:17"},"src":"860:33:17"}],"scope":1950,"src":"411:484:17","usedErrors":[1937,1940,1943,1948],"usedEvents":[]}],"src":"100:796:17"},"id":17},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[2073]},"id":2074,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1951,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:18"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":1952,"nodeType":"StructuredDocumentation","src":"219:1187:18","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 ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\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 ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"id":2073,"linearizedBaseContracts":[2073],"name":"StorageSlot","nameLocation":"1415:11:18","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":1955,"members":[{"constant":false,"id":1954,"mutability":"mutable","name":"value","nameLocation":"1470:5:18","nodeType":"VariableDeclaration","scope":1955,"src":"1462:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1953,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1440:11:18","nodeType":"StructDefinition","scope":2073,"src":"1433:49:18","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":1958,"members":[{"constant":false,"id":1957,"mutability":"mutable","name":"value","nameLocation":"1522:5:18","nodeType":"VariableDeclaration","scope":1958,"src":"1517:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1956,"name":"bool","nodeType":"ElementaryTypeName","src":"1517:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1495:11:18","nodeType":"StructDefinition","scope":2073,"src":"1488:46:18","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":1961,"members":[{"constant":false,"id":1960,"mutability":"mutable","name":"value","nameLocation":"1577:5:18","nodeType":"VariableDeclaration","scope":1961,"src":"1569:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1959,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1547:11:18","nodeType":"StructDefinition","scope":2073,"src":"1540:49:18","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":1964,"members":[{"constant":false,"id":1963,"mutability":"mutable","name":"value","nameLocation":"1632:5:18","nodeType":"VariableDeclaration","scope":1964,"src":"1624:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1962,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1602:11:18","nodeType":"StructDefinition","scope":2073,"src":"1595:49:18","visibility":"public"},{"canonicalName":"StorageSlot.Int256Slot","id":1967,"members":[{"constant":false,"id":1966,"mutability":"mutable","name":"value","nameLocation":"1685:5:18","nodeType":"VariableDeclaration","scope":1967,"src":"1678:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1965,"name":"int256","nodeType":"ElementaryTypeName","src":"1678:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"1657:10:18","nodeType":"StructDefinition","scope":2073,"src":"1650:47:18","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":1970,"members":[{"constant":false,"id":1969,"mutability":"mutable","name":"value","nameLocation":"1738:5:18","nodeType":"VariableDeclaration","scope":1970,"src":"1731:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1968,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1710:10:18","nodeType":"StructDefinition","scope":2073,"src":"1703:47:18","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":1973,"members":[{"constant":false,"id":1972,"mutability":"mutable","name":"value","nameLocation":"1789:5:18","nodeType":"VariableDeclaration","scope":1973,"src":"1783:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1971,"name":"bytes","nodeType":"ElementaryTypeName","src":"1783:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1763:9:18","nodeType":"StructDefinition","scope":2073,"src":"1756:45:18","visibility":"public"},{"body":{"id":1983,"nodeType":"Block","src":"1983:79:18","statements":[{"AST":{"nativeSrc":"2018:38:18","nodeType":"YulBlock","src":"2018:38:18","statements":[{"nativeSrc":"2032:14:18","nodeType":"YulAssignment","src":"2032:14:18","value":{"name":"slot","nativeSrc":"2042:4:18","nodeType":"YulIdentifier","src":"2042:4:18"},"variableNames":[{"name":"r.slot","nativeSrc":"2032:6:18","nodeType":"YulIdentifier","src":"2032:6:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1980,"isOffset":false,"isSlot":true,"src":"2032:6:18","suffix":"slot","valueSize":1},{"declaration":1976,"isOffset":false,"isSlot":false,"src":"2042:4:18","valueSize":1}],"flags":["memory-safe"],"id":1982,"nodeType":"InlineAssembly","src":"1993:63:18"}]},"documentation":{"id":1974,"nodeType":"StructuredDocumentation","src":"1807:87:18","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":1984,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1908:14:18","nodeType":"FunctionDefinition","parameters":{"id":1977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1976,"mutability":"mutable","name":"slot","nameLocation":"1931:4:18","nodeType":"VariableDeclaration","scope":1984,"src":"1923:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1975,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1923:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:14:18"},"returnParameters":{"id":1981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1980,"mutability":"mutable","name":"r","nameLocation":"1980:1:18","nodeType":"VariableDeclaration","scope":1984,"src":"1960:21:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1955_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":1979,"nodeType":"UserDefinedTypeName","pathNode":{"id":1978,"name":"AddressSlot","nameLocations":["1960:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":1955,"src":"1960:11:18"},"referencedDeclaration":1955,"src":"1960:11:18","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSlot_$1955_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1959:23:18"},"scope":2073,"src":"1899:163:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1994,"nodeType":"Block","src":"2243:79:18","statements":[{"AST":{"nativeSrc":"2278:38:18","nodeType":"YulBlock","src":"2278:38:18","statements":[{"nativeSrc":"2292:14:18","nodeType":"YulAssignment","src":"2292:14:18","value":{"name":"slot","nativeSrc":"2302:4:18","nodeType":"YulIdentifier","src":"2302:4:18"},"variableNames":[{"name":"r.slot","nativeSrc":"2292:6:18","nodeType":"YulIdentifier","src":"2292:6:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1991,"isOffset":false,"isSlot":true,"src":"2292:6:18","suffix":"slot","valueSize":1},{"declaration":1987,"isOffset":false,"isSlot":false,"src":"2302:4:18","valueSize":1}],"flags":["memory-safe"],"id":1993,"nodeType":"InlineAssembly","src":"2253:63:18"}]},"documentation":{"id":1985,"nodeType":"StructuredDocumentation","src":"2068:86:18","text":" @dev Returns a `BooleanSlot` with member `value` located at `slot`."},"id":1995,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2168:14:18","nodeType":"FunctionDefinition","parameters":{"id":1988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1987,"mutability":"mutable","name":"slot","nameLocation":"2191:4:18","nodeType":"VariableDeclaration","scope":1995,"src":"2183:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1986,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2182:14:18"},"returnParameters":{"id":1992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1991,"mutability":"mutable","name":"r","nameLocation":"2240:1:18","nodeType":"VariableDeclaration","scope":1995,"src":"2220:21:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1958_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":1990,"nodeType":"UserDefinedTypeName","pathNode":{"id":1989,"name":"BooleanSlot","nameLocations":["2220:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":1958,"src":"2220:11:18"},"referencedDeclaration":1958,"src":"2220:11:18","typeDescriptions":{"typeIdentifier":"t_struct$_BooleanSlot_$1958_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2219:23:18"},"scope":2073,"src":"2159:163:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2005,"nodeType":"Block","src":"2503:79:18","statements":[{"AST":{"nativeSrc":"2538:38:18","nodeType":"YulBlock","src":"2538:38:18","statements":[{"nativeSrc":"2552:14:18","nodeType":"YulAssignment","src":"2552:14:18","value":{"name":"slot","nativeSrc":"2562:4:18","nodeType":"YulIdentifier","src":"2562:4:18"},"variableNames":[{"name":"r.slot","nativeSrc":"2552:6:18","nodeType":"YulIdentifier","src":"2552:6:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2002,"isOffset":false,"isSlot":true,"src":"2552:6:18","suffix":"slot","valueSize":1},{"declaration":1998,"isOffset":false,"isSlot":false,"src":"2562:4:18","valueSize":1}],"flags":["memory-safe"],"id":2004,"nodeType":"InlineAssembly","src":"2513:63:18"}]},"documentation":{"id":1996,"nodeType":"StructuredDocumentation","src":"2328:86:18","text":" @dev Returns a `Bytes32Slot` with member `value` located at `slot`."},"id":2006,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2428:14:18","nodeType":"FunctionDefinition","parameters":{"id":1999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1998,"mutability":"mutable","name":"slot","nameLocation":"2451:4:18","nodeType":"VariableDeclaration","scope":2006,"src":"2443:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1997,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2443:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2442:14:18"},"returnParameters":{"id":2003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2002,"mutability":"mutable","name":"r","nameLocation":"2500:1:18","nodeType":"VariableDeclaration","scope":2006,"src":"2480:21:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1961_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":2001,"nodeType":"UserDefinedTypeName","pathNode":{"id":2000,"name":"Bytes32Slot","nameLocations":["2480:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":1961,"src":"2480:11:18"},"referencedDeclaration":1961,"src":"2480:11:18","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$1961_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2479:23:18"},"scope":2073,"src":"2419:163:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2016,"nodeType":"Block","src":"2763:79:18","statements":[{"AST":{"nativeSrc":"2798:38:18","nodeType":"YulBlock","src":"2798:38:18","statements":[{"nativeSrc":"2812:14:18","nodeType":"YulAssignment","src":"2812:14:18","value":{"name":"slot","nativeSrc":"2822:4:18","nodeType":"YulIdentifier","src":"2822:4:18"},"variableNames":[{"name":"r.slot","nativeSrc":"2812:6:18","nodeType":"YulIdentifier","src":"2812:6:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2013,"isOffset":false,"isSlot":true,"src":"2812:6:18","suffix":"slot","valueSize":1},{"declaration":2009,"isOffset":false,"isSlot":false,"src":"2822:4:18","valueSize":1}],"flags":["memory-safe"],"id":2015,"nodeType":"InlineAssembly","src":"2773:63:18"}]},"documentation":{"id":2007,"nodeType":"StructuredDocumentation","src":"2588:86:18","text":" @dev Returns a `Uint256Slot` with member `value` located at `slot`."},"id":2017,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2688:14:18","nodeType":"FunctionDefinition","parameters":{"id":2010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2009,"mutability":"mutable","name":"slot","nameLocation":"2711:4:18","nodeType":"VariableDeclaration","scope":2017,"src":"2703:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2008,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2703:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2702:14:18"},"returnParameters":{"id":2014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2013,"mutability":"mutable","name":"r","nameLocation":"2760:1:18","nodeType":"VariableDeclaration","scope":2017,"src":"2740:21:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1964_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":2012,"nodeType":"UserDefinedTypeName","pathNode":{"id":2011,"name":"Uint256Slot","nameLocations":["2740:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":1964,"src":"2740:11:18"},"referencedDeclaration":1964,"src":"2740:11:18","typeDescriptions":{"typeIdentifier":"t_struct$_Uint256Slot_$1964_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2739:23:18"},"scope":2073,"src":"2679:163:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2027,"nodeType":"Block","src":"3020:79:18","statements":[{"AST":{"nativeSrc":"3055:38:18","nodeType":"YulBlock","src":"3055:38:18","statements":[{"nativeSrc":"3069:14:18","nodeType":"YulAssignment","src":"3069:14:18","value":{"name":"slot","nativeSrc":"3079:4:18","nodeType":"YulIdentifier","src":"3079:4:18"},"variableNames":[{"name":"r.slot","nativeSrc":"3069:6:18","nodeType":"YulIdentifier","src":"3069:6:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2024,"isOffset":false,"isSlot":true,"src":"3069:6:18","suffix":"slot","valueSize":1},{"declaration":2020,"isOffset":false,"isSlot":false,"src":"3079:4:18","valueSize":1}],"flags":["memory-safe"],"id":2026,"nodeType":"InlineAssembly","src":"3030:63:18"}]},"documentation":{"id":2018,"nodeType":"StructuredDocumentation","src":"2848:85:18","text":" @dev Returns a `Int256Slot` with member `value` located at `slot`."},"id":2028,"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"2947:13:18","nodeType":"FunctionDefinition","parameters":{"id":2021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2020,"mutability":"mutable","name":"slot","nameLocation":"2969:4:18","nodeType":"VariableDeclaration","scope":2028,"src":"2961:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2019,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2961:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2960:14:18"},"returnParameters":{"id":2025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2024,"mutability":"mutable","name":"r","nameLocation":"3017:1:18","nodeType":"VariableDeclaration","scope":2028,"src":"2998:20:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$1967_storage_ptr","typeString":"struct StorageSlot.Int256Slot"},"typeName":{"id":2023,"nodeType":"UserDefinedTypeName","pathNode":{"id":2022,"name":"Int256Slot","nameLocations":["2998:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":1967,"src":"2998:10:18"},"referencedDeclaration":1967,"src":"2998:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_Int256Slot_$1967_storage_ptr","typeString":"struct StorageSlot.Int256Slot"}},"visibility":"internal"}],"src":"2997:22:18"},"scope":2073,"src":"2938:161:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2038,"nodeType":"Block","src":"3277:79:18","statements":[{"AST":{"nativeSrc":"3312:38:18","nodeType":"YulBlock","src":"3312:38:18","statements":[{"nativeSrc":"3326:14:18","nodeType":"YulAssignment","src":"3326:14:18","value":{"name":"slot","nativeSrc":"3336:4:18","nodeType":"YulIdentifier","src":"3336:4:18"},"variableNames":[{"name":"r.slot","nativeSrc":"3326:6:18","nodeType":"YulIdentifier","src":"3326:6:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2035,"isOffset":false,"isSlot":true,"src":"3326:6:18","suffix":"slot","valueSize":1},{"declaration":2031,"isOffset":false,"isSlot":false,"src":"3336:4:18","valueSize":1}],"flags":["memory-safe"],"id":2037,"nodeType":"InlineAssembly","src":"3287:63:18"}]},"documentation":{"id":2029,"nodeType":"StructuredDocumentation","src":"3105:85:18","text":" @dev Returns a `StringSlot` with member `value` located at `slot`."},"id":2039,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3204:13:18","nodeType":"FunctionDefinition","parameters":{"id":2032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2031,"mutability":"mutable","name":"slot","nameLocation":"3226:4:18","nodeType":"VariableDeclaration","scope":2039,"src":"3218:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2030,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3218:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3217:14:18"},"returnParameters":{"id":2036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2035,"mutability":"mutable","name":"r","nameLocation":"3274:1:18","nodeType":"VariableDeclaration","scope":2039,"src":"3255:20:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1970_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2034,"nodeType":"UserDefinedTypeName","pathNode":{"id":2033,"name":"StringSlot","nameLocations":["3255:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":1970,"src":"3255:10:18"},"referencedDeclaration":1970,"src":"3255:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1970_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3254:22:18"},"scope":2073,"src":"3195:161:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2049,"nodeType":"Block","src":"3558:85:18","statements":[{"AST":{"nativeSrc":"3593:44:18","nodeType":"YulBlock","src":"3593:44:18","statements":[{"nativeSrc":"3607:20:18","nodeType":"YulAssignment","src":"3607:20:18","value":{"name":"store.slot","nativeSrc":"3617:10:18","nodeType":"YulIdentifier","src":"3617:10:18"},"variableNames":[{"name":"r.slot","nativeSrc":"3607:6:18","nodeType":"YulIdentifier","src":"3607:6:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2046,"isOffset":false,"isSlot":true,"src":"3607:6:18","suffix":"slot","valueSize":1},{"declaration":2042,"isOffset":false,"isSlot":true,"src":"3617:10:18","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":2048,"nodeType":"InlineAssembly","src":"3568:69:18"}]},"documentation":{"id":2040,"nodeType":"StructuredDocumentation","src":"3362:101:18","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":2050,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3477:13:18","nodeType":"FunctionDefinition","parameters":{"id":2043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2042,"mutability":"mutable","name":"store","nameLocation":"3506:5:18","nodeType":"VariableDeclaration","scope":2050,"src":"3491:20:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":2041,"name":"string","nodeType":"ElementaryTypeName","src":"3491:6:18","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3490:22:18"},"returnParameters":{"id":2047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2046,"mutability":"mutable","name":"r","nameLocation":"3555:1:18","nodeType":"VariableDeclaration","scope":2050,"src":"3536:20:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1970_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":2045,"nodeType":"UserDefinedTypeName","pathNode":{"id":2044,"name":"StringSlot","nameLocations":["3536:10:18"],"nodeType":"IdentifierPath","referencedDeclaration":1970,"src":"3536:10:18"},"referencedDeclaration":1970,"src":"3536:10:18","typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1970_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3535:22:18"},"scope":2073,"src":"3468:175:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2060,"nodeType":"Block","src":"3818:79:18","statements":[{"AST":{"nativeSrc":"3853:38:18","nodeType":"YulBlock","src":"3853:38:18","statements":[{"nativeSrc":"3867:14:18","nodeType":"YulAssignment","src":"3867:14:18","value":{"name":"slot","nativeSrc":"3877:4:18","nodeType":"YulIdentifier","src":"3877:4:18"},"variableNames":[{"name":"r.slot","nativeSrc":"3867:6:18","nodeType":"YulIdentifier","src":"3867:6:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2057,"isOffset":false,"isSlot":true,"src":"3867:6:18","suffix":"slot","valueSize":1},{"declaration":2053,"isOffset":false,"isSlot":false,"src":"3877:4:18","valueSize":1}],"flags":["memory-safe"],"id":2059,"nodeType":"InlineAssembly","src":"3828:63:18"}]},"documentation":{"id":2051,"nodeType":"StructuredDocumentation","src":"3649:84:18","text":" @dev Returns a `BytesSlot` with member `value` located at `slot`."},"id":2061,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3747:12:18","nodeType":"FunctionDefinition","parameters":{"id":2054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2053,"mutability":"mutable","name":"slot","nameLocation":"3768:4:18","nodeType":"VariableDeclaration","scope":2061,"src":"3760:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2052,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3760:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3759:14:18"},"returnParameters":{"id":2058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2057,"mutability":"mutable","name":"r","nameLocation":"3815:1:18","nodeType":"VariableDeclaration","scope":2061,"src":"3797:19:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1973_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2056,"nodeType":"UserDefinedTypeName","pathNode":{"id":2055,"name":"BytesSlot","nameLocations":["3797:9:18"],"nodeType":"IdentifierPath","referencedDeclaration":1973,"src":"3797:9:18"},"referencedDeclaration":1973,"src":"3797:9:18","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1973_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3796:21:18"},"scope":2073,"src":"3738:159:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2071,"nodeType":"Block","src":"4094:85:18","statements":[{"AST":{"nativeSrc":"4129:44:18","nodeType":"YulBlock","src":"4129:44:18","statements":[{"nativeSrc":"4143:20:18","nodeType":"YulAssignment","src":"4143:20:18","value":{"name":"store.slot","nativeSrc":"4153:10:18","nodeType":"YulIdentifier","src":"4153:10:18"},"variableNames":[{"name":"r.slot","nativeSrc":"4143:6:18","nodeType":"YulIdentifier","src":"4143:6:18"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2068,"isOffset":false,"isSlot":true,"src":"4143:6:18","suffix":"slot","valueSize":1},{"declaration":2064,"isOffset":false,"isSlot":true,"src":"4153:10:18","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":2070,"nodeType":"InlineAssembly","src":"4104:69:18"}]},"documentation":{"id":2062,"nodeType":"StructuredDocumentation","src":"3903:99:18","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":2072,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"4016:12:18","nodeType":"FunctionDefinition","parameters":{"id":2065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2064,"mutability":"mutable","name":"store","nameLocation":"4043:5:18","nodeType":"VariableDeclaration","scope":2072,"src":"4029:19:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":2063,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:21:18"},"returnParameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2068,"mutability":"mutable","name":"r","nameLocation":"4091:1:18","nodeType":"VariableDeclaration","scope":2072,"src":"4073:19:18","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1973_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":2067,"nodeType":"UserDefinedTypeName","pathNode":{"id":2066,"name":"BytesSlot","nameLocations":["4073:9:18"],"nodeType":"IdentifierPath","referencedDeclaration":1973,"src":"4073:9:18"},"referencedDeclaration":1973,"src":"4073:9:18","typeDescriptions":{"typeIdentifier":"t_struct$_BytesSlot_$1973_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"4072:21:18"},"scope":2073,"src":"4007:172:18","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2074,"src":"1407:2774:18","usedErrors":[],"usedEvents":[]}],"src":"193:3989:18"},"id":18},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[2085]},"id":2086,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2075,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"115:24:19"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":2076,"nodeType":"StructuredDocumentation","src":"141:280:19","text":" @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":2085,"linearizedBaseContracts":[2085],"name":"IERC165","nameLocation":"432:7:19","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2077,"nodeType":"StructuredDocumentation","src":"446:340:19","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":2084,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"800:17:19","nodeType":"FunctionDefinition","parameters":{"id":2080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2079,"mutability":"mutable","name":"interfaceId","nameLocation":"825:11:19","nodeType":"VariableDeclaration","scope":2084,"src":"818:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2078,"name":"bytes4","nodeType":"ElementaryTypeName","src":"818:6:19","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"817:20:19"},"returnParameters":{"id":2083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2082,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2084,"src":"861:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2081,"name":"bool","nodeType":"ElementaryTypeName","src":"861:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"860:6:19"},"scope":2085,"src":"791:76:19","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2086,"src":"422:447:19","usedErrors":[],"usedEvents":[]}],"src":"115:755:19"},"id":19},"contracts/VideoPayment.sol":{"ast":{"absolutePath":"contracts/VideoPayment.sol","exportedSymbols":{"ERC1967Utils":[1089],"IERC1155":[1442],"IERC165":[2085],"IERC1822Proxiable":[757],"IERC20":[1520],"IERC721":[1637],"IVideoPayment":[4049],"Initializable":[267],"ReentrancyGuardUpgradeable":[578],"UUPSUpgradeable":[449],"VideoPayment":[3683],"VideoPaymentStorage":[4107]},"id":3684,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2087,"literals":["solidity","^","0.8",".19"],"nodeType":"PragmaDirective","src":"32:24:20"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":2088,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3684,"sourceUnit":268,"src":"58:75:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","id":2089,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3684,"sourceUnit":450,"src":"134:77:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol","id":2090,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3684,"sourceUnit":579,"src":"212:82:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":2091,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3684,"sourceUnit":1521,"src":"295:56:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"@openzeppelin/contracts/token/ERC721/IERC721.sol","id":2092,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3684,"sourceUnit":1638,"src":"352:58:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","file":"@openzeppelin/contracts/token/ERC1155/IERC1155.sol","id":2093,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3684,"sourceUnit":1443,"src":"411:60:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/interfaces/IVideoPayment.sol","file":"./interfaces/IVideoPayment.sol","id":2094,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3684,"sourceUnit":4050,"src":"472:40:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/libraries/VideoPaymentStorage.sol","file":"./libraries/VideoPaymentStorage.sol","id":2095,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3684,"sourceUnit":4108,"src":"513:45:20","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2097,"name":"Initializable","nameLocations":["687:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":267,"src":"687:13:20"},"id":2098,"nodeType":"InheritanceSpecifier","src":"687:13:20"},{"baseName":{"id":2099,"name":"UUPSUpgradeable","nameLocations":["706:15:20"],"nodeType":"IdentifierPath","referencedDeclaration":449,"src":"706:15:20"},"id":2100,"nodeType":"InheritanceSpecifier","src":"706:15:20"},{"baseName":{"id":2101,"name":"ReentrancyGuardUpgradeable","nameLocations":["727:26:20"],"nodeType":"IdentifierPath","referencedDeclaration":578,"src":"727:26:20"},"id":2102,"nodeType":"InheritanceSpecifier","src":"727:26:20"},{"baseName":{"id":2103,"name":"IVideoPayment","nameLocations":["759:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":4049,"src":"759:13:20"},"id":2104,"nodeType":"InheritanceSpecifier","src":"759:13:20"}],"canonicalName":"VideoPayment","contractDependencies":[],"contractKind":"contract","documentation":{"id":2096,"nodeType":"StructuredDocumentation","src":"560:97:20","text":" @title VideoPayment\n @dev Main contract for video content payment and access control"},"fullyImplemented":true,"id":3683,"linearizedBaseContracts":[3683,4049,578,449,757,267],"name":"VideoPayment","nameLocation":"667:12:20","nodeType":"ContractDefinition","nodes":[{"global":false,"id":2108,"libraryName":{"id":2105,"name":"VideoPaymentStorage","nameLocations":["785:19:20"],"nodeType":"IdentifierPath","referencedDeclaration":4107,"src":"785:19:20"},"nodeType":"UsingForDirective","src":"779:76:20","typeName":{"id":2107,"nodeType":"UserDefinedTypeName","pathNode":{"id":2106,"name":"VideoPaymentStorage.VideoPaymentStorageStruct","nameLocations":["809:19:20","829:25:20"],"nodeType":"IdentifierPath","referencedDeclaration":4106,"src":"809:45:20"},"referencedDeclaration":4106,"src":"809:45:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage_ptr","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct"}}},{"constant":false,"id":2111,"mutability":"mutable","name":"_storage","nameLocation":"930:8:20","nodeType":"VariableDeclaration","scope":3683,"src":"876:62:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct"},"typeName":{"id":2110,"nodeType":"UserDefinedTypeName","pathNode":{"id":2109,"name":"VideoPaymentStorage.VideoPaymentStorageStruct","nameLocations":["876:19:20","896:25:20"],"nodeType":"IdentifierPath","referencedDeclaration":4106,"src":"876:45:20"},"referencedDeclaration":4106,"src":"876:45:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage_ptr","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct"}},"visibility":"private"},{"body":{"id":2123,"nodeType":"Block","src":"983:79:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2113,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"997:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1001:6:20","memberName":"sender","nodeType":"MemberAccess","src":"997:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2115,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"1011:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1020:5:20","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":4077,"src":"1011:14:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"997:28:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2121,"nodeType":"IfStatement","src":"993:51:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2118,"name":"NotOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"1034:8:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1034:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2120,"nodeType":"RevertStatement","src":"1027:17:20"}},{"id":2122,"nodeType":"PlaceholderStatement","src":"1054:1:20"}]},"id":2124,"name":"onlyOwner","nameLocation":"971:9:20","nodeType":"ModifierDefinition","parameters":{"id":2112,"nodeType":"ParameterList","parameters":[],"src":"980:2:20"},"src":"962:100:20","virtual":false,"visibility":"internal"},{"body":{"id":2137,"nodeType":"Block","src":"1089:80:20","statements":[{"condition":{"id":2131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1103:29:20","subExpression":{"baseExpression":{"expression":{"id":2126,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"1104:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1113:7:20","memberName":"isAdmin","nodeType":"MemberAccess","referencedDeclaration":4081,"src":"1104:16:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2130,"indexExpression":{"expression":{"id":2128,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1121:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1125:6:20","memberName":"sender","nodeType":"MemberAccess","src":"1121:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1104:28:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2135,"nodeType":"IfStatement","src":"1099:52:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2132,"name":"NotAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3714,"src":"1141:8:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1141:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2134,"nodeType":"RevertStatement","src":"1134:17:20"}},{"id":2136,"nodeType":"PlaceholderStatement","src":"1161:1:20"}]},"id":2138,"name":"onlyAdmin","nameLocation":"1077:9:20","nodeType":"ModifierDefinition","parameters":{"id":2125,"nodeType":"ParameterList","parameters":[],"src":"1086:2:20"},"src":"1068:101:20","virtual":false,"visibility":"internal"},{"body":{"id":2147,"nodeType":"Block","src":"1200:72:20","statements":[{"condition":{"expression":{"id":2140,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"1214:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1223:6:20","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":4099,"src":"1214:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2145,"nodeType":"IfStatement","src":"1210:44:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2142,"name":"ContractPaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3716,"src":"1238:14:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1238:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2144,"nodeType":"RevertStatement","src":"1231:23:20"}},{"id":2146,"nodeType":"PlaceholderStatement","src":"1264:1:20"}]},"id":2148,"name":"whenNotPaused","nameLocation":"1184:13:20","nodeType":"ModifierDefinition","parameters":{"id":2139,"nodeType":"ParameterList","parameters":[],"src":"1197:2:20"},"src":"1175:97:20","virtual":false,"visibility":"internal"},{"body":{"id":2163,"nodeType":"Block","src":"1319:113:20","statements":[{"condition":{"id":2157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1333:44:20","subExpression":{"expression":{"baseExpression":{"expression":{"id":2152,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"1334:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2153,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1343:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"1334:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2155,"indexExpression":{"id":2154,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"1358:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1334:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2156,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1369:8:20","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4067,"src":"1334:43:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2161,"nodeType":"IfStatement","src":"1329:85:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2158,"name":"InvalidContent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3718,"src":"1398:14:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1398:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2160,"nodeType":"RevertStatement","src":"1391:23:20"}},{"id":2162,"nodeType":"PlaceholderStatement","src":"1424:1:20"}]},"id":2164,"name":"validContent","nameLocation":"1287:12:20","nodeType":"ModifierDefinition","parameters":{"id":2151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2150,"mutability":"mutable","name":"contentId","nameLocation":"1308:9:20","nodeType":"VariableDeclaration","scope":2164,"src":"1300:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2149,"name":"uint256","nodeType":"ElementaryTypeName","src":"1300:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1299:19:20"},"src":"1278:154:20","virtual":false,"visibility":"internal"},{"body":{"id":2171,"nodeType":"Block","src":"1505:39:20","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2168,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":221,"src":"1515:20:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1515:22:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2170,"nodeType":"ExpressionStatement","src":"1515:22:20"}]},"documentation":{"id":2165,"nodeType":"StructuredDocumentation","src":"1438:48:20","text":"@custom:oz-upgrades-unsafe-allow constructor"},"id":2172,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2166,"nodeType":"ParameterList","parameters":[],"src":"1502:2:20"},"returnParameters":{"id":2167,"nodeType":"ParameterList","parameters":[],"src":"1505:0:20"},"scope":3683,"src":"1491:53:20","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2298,"nodeType":"Block","src":"1952:860:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2186,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"1966:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1990: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":2188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1982:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2187,"name":"address","nodeType":"ElementaryTypeName","src":"1982:7:20","typeDescriptions":{}}},"id":2190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1982:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1966:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2195,"nodeType":"IfStatement","src":"1962:52:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2192,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"2001:11:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2001:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2194,"nodeType":"RevertStatement","src":"1994:20:20"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2196,"name":"__UUPSUpgradeable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":321,"src":"2025:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2025:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"ExpressionStatement","src":"2025:24:20"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2199,"name":"__ReentrancyGuard_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":489,"src":"2059:22:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2059:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2201,"nodeType":"ExpressionStatement","src":"2059:24:20"},{"expression":{"id":2206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2202,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"2094:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2204,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2103:5:20","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":4077,"src":"2094:14:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2205,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"2111:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2094:29:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2207,"nodeType":"ExpressionStatement","src":"2094:29:20"},{"expression":{"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2208,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"2133:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2210,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2142:7:20","memberName":"version","nodeType":"MemberAccess","referencedDeclaration":4101,"src":"2133:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":2211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2152:1:20","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2133:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2213,"nodeType":"ExpressionStatement","src":"2133:20:20"},{"expression":{"id":2218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":2214,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"2163:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2172:6:20","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":4099,"src":"2163:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2181:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"2163:23:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2219,"nodeType":"ExpressionStatement","src":"2163:23:20"},{"body":{"id":2257,"nodeType":"Block","src":"2278:185:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2231,"name":"initialAdmins","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"2296:13:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2233,"indexExpression":{"id":2232,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2221,"src":"2310:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2296:16:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2324: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":2235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2316:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2234,"name":"address","nodeType":"ElementaryTypeName","src":"2316:7:20","typeDescriptions":{}}},"id":2237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2316:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2296:30:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2256,"nodeType":"IfStatement","src":"2292:161:20","trueBody":{"id":2255,"nodeType":"Block","src":"2328:125:20","statements":[{"expression":{"id":2247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2239,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"2346:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2244,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2355:7:20","memberName":"isAdmin","nodeType":"MemberAccess","referencedDeclaration":4081,"src":"2346:16:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2245,"indexExpression":{"baseExpression":{"id":2241,"name":"initialAdmins","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"2363:13:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2243,"indexExpression":{"id":2242,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2221,"src":"2377:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2363:16:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2346:34:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2383:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2346:41:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2248,"nodeType":"ExpressionStatement","src":"2346:41:20"},{"eventCall":{"arguments":[{"baseExpression":{"id":2250,"name":"initialAdmins","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"2421:13:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2252,"indexExpression":{"id":2251,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2221,"src":"2435:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2421:16:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2249,"name":"AdminAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3804,"src":"2410:10:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2410:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2254,"nodeType":"EmitStatement","src":"2405:33:20"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2224,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2221,"src":"2247:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2225,"name":"initialAdmins","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2178,"src":"2251:13:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2265:6:20","memberName":"length","nodeType":"MemberAccess","src":"2251:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:24:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2258,"initializationExpression":{"assignments":[2221],"declarations":[{"constant":false,"id":2221,"mutability":"mutable","name":"i","nameLocation":"2240:1:20","nodeType":"VariableDeclaration","scope":2258,"src":"2232:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2220,"name":"uint256","nodeType":"ElementaryTypeName","src":"2232:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2223,"initialValue":{"hexValue":"30","id":2222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2244:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2232:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2273:3:20","subExpression":{"id":2228,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2221,"src":"2273:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2230,"nodeType":"ExpressionStatement","src":"2273:3:20"},"nodeType":"ForStatement","src":"2227:236:20"},{"body":{"id":2296,"nodeType":"Block","src":"2574:232:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":2270,"name":"supportedTokenAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"2592:23:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2272,"indexExpression":{"id":2271,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"2616:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2592:26:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2630: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":2274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2622:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2273,"name":"address","nodeType":"ElementaryTypeName","src":"2622:7:20","typeDescriptions":{}}},"id":2276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2622:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2592:40:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2295,"nodeType":"IfStatement","src":"2588:208:20","trueBody":{"id":2294,"nodeType":"Block","src":"2634:162:20","statements":[{"expression":{"id":2286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2278,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"2652:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2283,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2661:15:20","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4097,"src":"2652:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2284,"indexExpression":{"baseExpression":{"id":2280,"name":"supportedTokenAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"2677:23:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2282,"indexExpression":{"id":2281,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"2701:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2677:26:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2652:52:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2707:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2652:59:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2287,"nodeType":"ExpressionStatement","src":"2652:59:20"},{"eventCall":{"arguments":[{"baseExpression":{"id":2289,"name":"supportedTokenAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"2754:23:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2291,"indexExpression":{"id":2290,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"2778:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2754:26:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2288,"name":"SupportedTokenAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3830,"src":"2734:19:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2734:47:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2293,"nodeType":"EmitStatement","src":"2729:52:20"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2263,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"2533:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2264,"name":"supportedTokenAddresses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"2537:23:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2561:6:20","memberName":"length","nodeType":"MemberAccess","src":"2537:30:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2533:34:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2297,"initializationExpression":{"assignments":[2260],"declarations":[{"constant":false,"id":2260,"mutability":"mutable","name":"i","nameLocation":"2526:1:20","nodeType":"VariableDeclaration","scope":2297,"src":"2518:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2259,"name":"uint256","nodeType":"ElementaryTypeName","src":"2518:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2262,"initialValue":{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2530:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2518:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2569:3:20","subExpression":{"id":2267,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"2569:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2269,"nodeType":"ExpressionStatement","src":"2569:3:20"},"nodeType":"ForStatement","src":"2513:293:20"}]},"documentation":{"id":2173,"nodeType":"StructuredDocumentation","src":"1550:232:20","text":" @dev Initialize the contract\n @param initialOwner Initial owner address\n @param initialAdmins Initial admin addresses array\n @param supportedTokenAddresses Initial supported token addresses array"},"functionSelector":"4a200fa5","id":2299,"implemented":true,"kind":"function","modifiers":[{"id":2184,"kind":"modifierInvocation","modifierName":{"id":2183,"name":"initializer","nameLocations":["1940:11:20"],"nodeType":"IdentifierPath","referencedDeclaration":107,"src":"1940:11:20"},"nodeType":"ModifierInvocation","src":"1940:11:20"}],"name":"initialize","nameLocation":"1796:10:20","nodeType":"FunctionDefinition","parameters":{"id":2182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2175,"mutability":"mutable","name":"initialOwner","nameLocation":"1824:12:20","nodeType":"VariableDeclaration","scope":2299,"src":"1816:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2174,"name":"address","nodeType":"ElementaryTypeName","src":"1816:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2178,"mutability":"mutable","name":"initialAdmins","nameLocation":"1863:13:20","nodeType":"VariableDeclaration","scope":2299,"src":"1846:30:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2176,"name":"address","nodeType":"ElementaryTypeName","src":"1846:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2177,"nodeType":"ArrayTypeName","src":"1846:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":2181,"mutability":"mutable","name":"supportedTokenAddresses","nameLocation":"1903:23:20","nodeType":"VariableDeclaration","scope":2299,"src":"1886:40:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2179,"name":"address","nodeType":"ElementaryTypeName","src":"1886:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2180,"nodeType":"ArrayTypeName","src":"1886:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1806:126:20"},"returnParameters":{"id":2185,"nodeType":"ParameterList","parameters":[],"src":"1952:0:20"},"scope":3683,"src":"1787:1025:20","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[4045],"body":{"id":2308,"nodeType":"Block","src":"2918:40:20","statements":[{"expression":{"expression":{"id":2305,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"2935:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2944:7:20","memberName":"version","nodeType":"MemberAccess","referencedDeclaration":4101,"src":"2935:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2304,"id":2307,"nodeType":"Return","src":"2928:23:20"}]},"documentation":{"id":2300,"nodeType":"StructuredDocumentation","src":"2818:44:20","text":" @dev Get contract version"},"functionSelector":"54fd4d50","id":2309,"implemented":true,"kind":"function","modifiers":[],"name":"version","nameLocation":"2876:7:20","nodeType":"FunctionDefinition","parameters":{"id":2301,"nodeType":"ParameterList","parameters":[],"src":"2883:2:20"},"returnParameters":{"id":2304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2303,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2309,"src":"2909:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2302,"name":"uint256","nodeType":"ElementaryTypeName","src":"2909:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2908:9:20"},"scope":3683,"src":"2867:91:20","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4048],"body":{"id":2322,"nodeType":"Block","src":"3069:169:20","statements":[{"eventCall":{"arguments":[{"arguments":[{"id":2318,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3225:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_VideoPayment_$3683","typeString":"contract VideoPayment"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VideoPayment_$3683","typeString":"contract VideoPayment"}],"id":2317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3217:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2316,"name":"address","nodeType":"ElementaryTypeName","src":"3217:7:20","typeDescriptions":{}}},"id":2319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3217:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2315,"name":"Upgraded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3842,"src":"3208:8:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3208:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2321,"nodeType":"EmitStatement","src":"3203:28:20"}]},"documentation":{"id":2310,"nodeType":"StructuredDocumentation","src":"2964:62:20","text":" @dev Migration function for future upgrades"},"functionSelector":"8fd3ab80","id":2323,"implemented":true,"kind":"function","modifiers":[{"id":2313,"kind":"modifierInvocation","modifierName":{"id":2312,"name":"onlyOwner","nameLocations":["3059:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2124,"src":"3059:9:20"},"nodeType":"ModifierInvocation","src":"3059:9:20"}],"name":"migrate","nameLocation":"3040:7:20","nodeType":"FunctionDefinition","parameters":{"id":2311,"nodeType":"ParameterList","parameters":[],"src":"3047:2:20"},"returnParameters":{"id":2314,"nodeType":"ParameterList","parameters":[],"src":"3069:0:20"},"scope":3683,"src":"3031:207:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[403],"body":{"id":2332,"nodeType":"Block","src":"3416:2:20","statements":[]},"documentation":{"id":2324,"nodeType":"StructuredDocumentation","src":"3244:71:20","text":" @dev Authorize upgrade (required by UUPSUpgradeable)"},"id":2333,"implemented":true,"kind":"function","modifiers":[{"id":2330,"kind":"modifierInvocation","modifierName":{"id":2329,"name":"onlyOwner","nameLocations":["3406:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2124,"src":"3406:9:20"},"nodeType":"ModifierInvocation","src":"3406:9:20"}],"name":"_authorizeUpgrade","nameLocation":"3329:17:20","nodeType":"FunctionDefinition","overrides":{"id":2328,"nodeType":"OverrideSpecifier","overrides":[],"src":"3397:8:20"},"parameters":{"id":2327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2326,"mutability":"mutable","name":"newImplementation","nameLocation":"3364:17:20","nodeType":"VariableDeclaration","scope":2333,"src":"3356:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2325,"name":"address","nodeType":"ElementaryTypeName","src":"3356:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3346:41:20"},"returnParameters":{"id":2331,"nodeType":"ParameterList","parameters":[],"src":"3416:0:20"},"scope":3683,"src":"3320:98:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3847],"body":{"id":2363,"nodeType":"Block","src":"3616:134:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2341,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2336,"src":"3630:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3647: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":2343,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3639:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2342,"name":"address","nodeType":"ElementaryTypeName","src":"3639:7:20","typeDescriptions":{}}},"id":2345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3639:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3630:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2350,"nodeType":"IfStatement","src":"3626:45:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2347,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"3658:11:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3658:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2349,"nodeType":"RevertStatement","src":"3651:20:20"}},{"expression":{"id":2357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2351,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"3681:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3690:7:20","memberName":"isAdmin","nodeType":"MemberAccess","referencedDeclaration":4081,"src":"3681:16:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2355,"indexExpression":{"id":2353,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2336,"src":"3698:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3681:23:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3707:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3681:30:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2358,"nodeType":"ExpressionStatement","src":"3681:30:20"},{"eventCall":{"arguments":[{"id":2360,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2336,"src":"3737:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2359,"name":"AdminAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3804,"src":"3726:10:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3726:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2362,"nodeType":"EmitStatement","src":"3721:22:20"}]},"documentation":{"id":2334,"nodeType":"StructuredDocumentation","src":"3485:74:20","text":" @dev Add admin\n @param admin Admin address to add"},"functionSelector":"70480275","id":2364,"implemented":true,"kind":"function","modifiers":[{"id":2339,"kind":"modifierInvocation","modifierName":{"id":2338,"name":"onlyOwner","nameLocations":["3606:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2124,"src":"3606:9:20"},"nodeType":"ModifierInvocation","src":"3606:9:20"}],"name":"addAdmin","nameLocation":"3573:8:20","nodeType":"FunctionDefinition","parameters":{"id":2337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2336,"mutability":"mutable","name":"admin","nameLocation":"3590:5:20","nodeType":"VariableDeclaration","scope":2364,"src":"3582:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2335,"name":"address","nodeType":"ElementaryTypeName","src":"3582:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3581:15:20"},"returnParameters":{"id":2340,"nodeType":"ParameterList","parameters":[],"src":"3616:0:20"},"scope":3683,"src":"3564:186:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3852],"body":{"id":2394,"nodeType":"Block","src":"3896:137:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2372,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2367,"src":"3910:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3927: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":2374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3919:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2373,"name":"address","nodeType":"ElementaryTypeName","src":"3919:7:20","typeDescriptions":{}}},"id":2376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3919:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3910:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2381,"nodeType":"IfStatement","src":"3906:45:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2378,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"3938:11:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3938:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2380,"nodeType":"RevertStatement","src":"3931:20:20"}},{"expression":{"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2382,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"3961:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2385,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3970:7:20","memberName":"isAdmin","nodeType":"MemberAccess","referencedDeclaration":4081,"src":"3961:16:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2386,"indexExpression":{"id":2384,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2367,"src":"3978:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3961:23:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3987:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3961:31:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2389,"nodeType":"ExpressionStatement","src":"3961:31:20"},{"eventCall":{"arguments":[{"id":2391,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2367,"src":"4020:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2390,"name":"AdminRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3808,"src":"4007:12:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4007:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2393,"nodeType":"EmitStatement","src":"4002:24:20"}]},"documentation":{"id":2365,"nodeType":"StructuredDocumentation","src":"3756:80:20","text":" @dev Remove admin\n @param admin Admin address to remove"},"functionSelector":"1785f53c","id":2395,"implemented":true,"kind":"function","modifiers":[{"id":2370,"kind":"modifierInvocation","modifierName":{"id":2369,"name":"onlyOwner","nameLocations":["3886:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2124,"src":"3886:9:20"},"nodeType":"ModifierInvocation","src":"3886:9:20"}],"name":"removeAdmin","nameLocation":"3850:11:20","nodeType":"FunctionDefinition","parameters":{"id":2368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2367,"mutability":"mutable","name":"admin","nameLocation":"3870:5:20","nodeType":"VariableDeclaration","scope":2395,"src":"3862:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2366,"name":"address","nodeType":"ElementaryTypeName","src":"3862:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3861:15:20"},"returnParameters":{"id":2371,"nodeType":"ParameterList","parameters":[],"src":"3896:0:20"},"scope":3683,"src":"3841:192:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3865],"body":{"id":2451,"nodeType":"Block","src":"4580:340:20","statements":[{"expression":{"id":2418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2411,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"4590:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2414,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4599:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"4590:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2415,"indexExpression":{"id":2413,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"4614:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4590:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4625:11:20","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4061,"src":"4590:46:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2417,"name":"nativePrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2400,"src":"4639:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4590:60:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2419,"nodeType":"ExpressionStatement","src":"4590:60:20"},{"expression":{"id":2427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2420,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"4660:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4669:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"4660:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2424,"indexExpression":{"id":2422,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"4684:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4660:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2425,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4695:16:20","memberName":"defaultViewCount","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"4660:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2426,"name":"defaultViewCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2402,"src":"4714:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4660:70:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2428,"nodeType":"ExpressionStatement","src":"4660:70:20"},{"expression":{"id":2436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2429,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"4740:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2432,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4749:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"4740:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2433,"indexExpression":{"id":2431,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"4764:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4740:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4775:12:20","memberName":"viewDuration","nodeType":"MemberAccess","referencedDeclaration":4065,"src":"4740:47:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2435,"name":"viewDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"4790:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4740:62:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2437,"nodeType":"ExpressionStatement","src":"4740:62:20"},{"expression":{"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2438,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"4812:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2441,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4821:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"4812:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2442,"indexExpression":{"id":2440,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"4836:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4812:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4847:8:20","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4067,"src":"4812:43:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2444,"name":"isActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2406,"src":"4858:8:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4812:54:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2446,"nodeType":"ExpressionStatement","src":"4812:54:20"},{"eventCall":{"arguments":[{"id":2448,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"4903:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2447,"name":"ContentConfigUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3812,"src":"4882:20:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4882:31:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2450,"nodeType":"EmitStatement","src":"4877:36:20"}]},"documentation":{"id":2396,"nodeType":"StructuredDocumentation","src":"4102:279:20","text":" @dev Set content configuration\n @param contentId Content ID\n @param nativePrice Native coin price\n @param defaultViewCount Default view count\n @param viewDuration View duration in seconds\n @param isActive Whether content is active"},"functionSelector":"b1b105fe","id":2452,"implemented":true,"kind":"function","modifiers":[{"id":2409,"kind":"modifierInvocation","modifierName":{"id":2408,"name":"onlyAdmin","nameLocations":["4570:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2138,"src":"4570:9:20"},"nodeType":"ModifierInvocation","src":"4570:9:20"}],"name":"setContentConfig","nameLocation":"4395:16:20","nodeType":"FunctionDefinition","parameters":{"id":2407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2398,"mutability":"mutable","name":"contentId","nameLocation":"4429:9:20","nodeType":"VariableDeclaration","scope":2452,"src":"4421:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2397,"name":"uint256","nodeType":"ElementaryTypeName","src":"4421:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2400,"mutability":"mutable","name":"nativePrice","nameLocation":"4456:11:20","nodeType":"VariableDeclaration","scope":2452,"src":"4448:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2399,"name":"uint256","nodeType":"ElementaryTypeName","src":"4448:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2402,"mutability":"mutable","name":"defaultViewCount","nameLocation":"4485:16:20","nodeType":"VariableDeclaration","scope":2452,"src":"4477:24:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2401,"name":"uint256","nodeType":"ElementaryTypeName","src":"4477:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2404,"mutability":"mutable","name":"viewDuration","nameLocation":"4519:12:20","nodeType":"VariableDeclaration","scope":2452,"src":"4511:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"4511:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2406,"mutability":"mutable","name":"isActive","nameLocation":"4546:8:20","nodeType":"VariableDeclaration","scope":2452,"src":"4541:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2405,"name":"bool","nodeType":"ElementaryTypeName","src":"4541:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4411:149:20"},"returnParameters":{"id":2410,"nodeType":"ParameterList","parameters":[],"src":"4580:0:20"},"scope":3683,"src":"4386:534:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3883],"body":{"id":2571,"nodeType":"Block","src":"5481:844:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2473,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"5508:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5519:6:20","memberName":"length","nodeType":"MemberAccess","src":"5508:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2475,"name":"nativePrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2459,"src":"5529:12:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5542:6:20","memberName":"length","nodeType":"MemberAccess","src":"5529:19:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5508:40:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2478,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"5564:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5575:6:20","memberName":"length","nodeType":"MemberAccess","src":"5564:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2480,"name":"defaultViewCounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"5585:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5603:6:20","memberName":"length","nodeType":"MemberAccess","src":"5585:24:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5564:45:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5508:101:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2484,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"5625:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5636:6:20","memberName":"length","nodeType":"MemberAccess","src":"5625:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2486,"name":"viewDurations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2465,"src":"5646:13:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5660:6:20","memberName":"length","nodeType":"MemberAccess","src":"5646:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5625:41:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5508:158:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2490,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"5682:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5693:6:20","memberName":"length","nodeType":"MemberAccess","src":"5682:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2492,"name":"isActiveArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"5703:13:20","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":2493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5717:6:20","memberName":"length","nodeType":"MemberAccess","src":"5703:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5682:41:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5508:215:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2499,"nodeType":"IfStatement","src":"5491:271:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2496,"name":"ArrayLengthMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3726,"src":"5741:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5741:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2498,"nodeType":"RevertStatement","src":"5734:28:20"}},{"body":{"id":2569,"nodeType":"Block","src":"5821:498:20","statements":[{"expression":{"id":2522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2511,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"5835:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2516,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5844:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"5835:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2517,"indexExpression":{"baseExpression":{"id":2513,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"5859:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2515,"indexExpression":{"id":2514,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"5870:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5859:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5835:38:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2518,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5874:11:20","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4061,"src":"5835:50:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2519,"name":"nativePrices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2459,"src":"5888:12:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2521,"indexExpression":{"id":2520,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"5918:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5888:45:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5835:98:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2523,"nodeType":"ExpressionStatement","src":"5835:98:20"},{"expression":{"id":2535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2524,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"5947:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2529,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5973:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"5947:40:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2530,"indexExpression":{"baseExpression":{"id":2526,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"5988:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2528,"indexExpression":{"id":2527,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"5999:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5988:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5947:55:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2531,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6020:16:20","memberName":"defaultViewCount","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"5947:89:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2532,"name":"defaultViewCounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2462,"src":"6039:17:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2534,"indexExpression":{"id":2533,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"6057:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6039:20:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5947:112:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2536,"nodeType":"ExpressionStatement","src":"5947:112:20"},{"expression":{"id":2548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2537,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"6073:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2542,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6082:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"6073:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2543,"indexExpression":{"baseExpression":{"id":2539,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"6097:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2541,"indexExpression":{"id":2540,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"6108:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6097:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6073:38:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6112:12:20","memberName":"viewDuration","nodeType":"MemberAccess","referencedDeclaration":4065,"src":"6073:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2545,"name":"viewDurations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2465,"src":"6127:13:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2547,"indexExpression":{"id":2546,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"6158:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6127:46:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6073:100:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2549,"nodeType":"ExpressionStatement","src":"6073:100:20"},{"expression":{"id":2561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2550,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"6187:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6196:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"6187:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2556,"indexExpression":{"baseExpression":{"id":2552,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"6211:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2554,"indexExpression":{"id":2553,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"6222:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6211:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6187:38:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6226:8:20","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4067,"src":"6187:47:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2558,"name":"isActiveArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2468,"src":"6237:13:20","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":2560,"indexExpression":{"id":2559,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"6251:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6237:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6187:66:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2562,"nodeType":"ExpressionStatement","src":"6187:66:20"},{"eventCall":{"arguments":[{"baseExpression":{"id":2564,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"6294:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2566,"indexExpression":{"id":2565,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"6305:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6294:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2563,"name":"ContentConfigUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3812,"src":"6273:20:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6273:35:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2568,"nodeType":"EmitStatement","src":"6268:40:20"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2504,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"5793:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2505,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2456,"src":"5797:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5808:6:20","memberName":"length","nodeType":"MemberAccess","src":"5797:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5793:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2570,"initializationExpression":{"assignments":[2501],"declarations":[{"constant":false,"id":2501,"mutability":"mutable","name":"i","nameLocation":"5786:1:20","nodeType":"VariableDeclaration","scope":2570,"src":"5778:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2500,"name":"uint256","nodeType":"ElementaryTypeName","src":"5778:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2503,"initialValue":{"hexValue":"30","id":2502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5790:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5778:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5816:3:20","subExpression":{"id":2508,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2501,"src":"5816:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2510,"nodeType":"ExpressionStatement","src":"5816:3:20"},"nodeType":"ForStatement","src":"5773:546:20"}]},"documentation":{"id":2453,"nodeType":"StructuredDocumentation","src":"4926:297:20","text":" @dev Batch set content configurations\n @param contentIds Content ID array\n @param nativePrices Native price array\n @param defaultViewCounts Default view count array\n @param viewDurations View duration array\n @param isActiveArray Active status array"},"functionSelector":"09b952be","id":2572,"implemented":true,"kind":"function","modifiers":[{"id":2471,"kind":"modifierInvocation","modifierName":{"id":2470,"name":"onlyAdmin","nameLocations":["5471:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2138,"src":"5471:9:20"},"nodeType":"ModifierInvocation","src":"5471:9:20"}],"name":"batchSetContentConfig","nameLocation":"5237:21:20","nodeType":"FunctionDefinition","parameters":{"id":2469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2456,"mutability":"mutable","name":"contentIds","nameLocation":"5285:10:20","nodeType":"VariableDeclaration","scope":2572,"src":"5268:27:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2454,"name":"uint256","nodeType":"ElementaryTypeName","src":"5268:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2455,"nodeType":"ArrayTypeName","src":"5268:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2459,"mutability":"mutable","name":"nativePrices","nameLocation":"5322:12:20","nodeType":"VariableDeclaration","scope":2572,"src":"5305:29:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2457,"name":"uint256","nodeType":"ElementaryTypeName","src":"5305:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2458,"nodeType":"ArrayTypeName","src":"5305:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2462,"mutability":"mutable","name":"defaultViewCounts","nameLocation":"5361:17:20","nodeType":"VariableDeclaration","scope":2572,"src":"5344:34:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2460,"name":"uint256","nodeType":"ElementaryTypeName","src":"5344:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2461,"nodeType":"ArrayTypeName","src":"5344:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2465,"mutability":"mutable","name":"viewDurations","nameLocation":"5405:13:20","nodeType":"VariableDeclaration","scope":2572,"src":"5388:30:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2463,"name":"uint256","nodeType":"ElementaryTypeName","src":"5388:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2464,"nodeType":"ArrayTypeName","src":"5388:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2468,"mutability":"mutable","name":"isActiveArray","nameLocation":"5442:13:20","nodeType":"VariableDeclaration","scope":2572,"src":"5428:27:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":2466,"name":"bool","nodeType":"ElementaryTypeName","src":"5428:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2467,"nodeType":"ArrayTypeName","src":"5428:6:20","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"5258:203:20"},"returnParameters":{"id":2472,"nodeType":"ParameterList","parameters":[],"src":"5481:0:20"},"scope":3683,"src":"5228:1097:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3890],"body":{"id":2586,"nodeType":"Block","src":"6535:67:20","statements":[{"expression":{"expression":{"baseExpression":{"expression":{"id":2580,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"6552:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2581,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6561:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"6552:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2583,"indexExpression":{"id":2582,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2575,"src":"6576:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6552:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2584,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6587:8:20","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4067,"src":"6552:43:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2579,"id":2585,"nodeType":"Return","src":"6545:50:20"}]},"documentation":{"id":2573,"nodeType":"StructuredDocumentation","src":"6331:126:20","text":" @dev Check if content is active\n @param contentId Content ID\n @return Whether content is active"},"functionSelector":"40033b3d","id":2587,"implemented":true,"kind":"function","modifiers":[],"name":"isContentActive","nameLocation":"6471:15:20","nodeType":"FunctionDefinition","parameters":{"id":2576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2575,"mutability":"mutable","name":"contentId","nameLocation":"6495:9:20","nodeType":"VariableDeclaration","scope":2587,"src":"6487:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2574,"name":"uint256","nodeType":"ElementaryTypeName","src":"6487:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6486:19:20"},"returnParameters":{"id":2579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2587,"src":"6529:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2577,"name":"bool","nodeType":"ElementaryTypeName","src":"6529:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6528:6:20"},"scope":3683,"src":"6462:140:20","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3899],"body":{"id":2626,"nodeType":"Block","src":"6951:190:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2599,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"6965:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6982: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":2601,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6974:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2600,"name":"address","nodeType":"ElementaryTypeName","src":"6974:7:20","typeDescriptions":{}}},"id":2603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6974:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6965:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2608,"nodeType":"IfStatement","src":"6961:45:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2605,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"6993:11:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6993:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2607,"nodeType":"RevertStatement","src":"6986:20:20"}},{"expression":{"id":2618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2609,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"7016:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2612,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7025:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"7016:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2613,"indexExpression":{"id":2611,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"7040:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7016:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2614,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7051:11:20","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4059,"src":"7016:46:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2616,"indexExpression":{"id":2615,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"7063:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7016:53:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2617,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"7072:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7016:61:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2619,"nodeType":"ExpressionStatement","src":"7016:61:20"},{"eventCall":{"arguments":[{"id":2621,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2590,"src":"7110:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2622,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"7121:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2623,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"7128:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2620,"name":"TokenPriceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3820,"src":"7092:17:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256)"}},"id":2624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7092:42:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2625,"nodeType":"EmitStatement","src":"7087:47:20"}]},"documentation":{"id":2588,"nodeType":"StructuredDocumentation","src":"6669:153:20","text":" @dev Update token price for content\n @param contentId Content ID\n @param token Token address\n @param price New price"},"functionSelector":"3428cebb","id":2627,"implemented":true,"kind":"function","modifiers":[{"id":2597,"kind":"modifierInvocation","modifierName":{"id":2596,"name":"onlyAdmin","nameLocations":["6941:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2138,"src":"6941:9:20"},"nodeType":"ModifierInvocation","src":"6941:9:20"}],"name":"updateTokenPrice","nameLocation":"6836:16:20","nodeType":"FunctionDefinition","parameters":{"id":2595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2590,"mutability":"mutable","name":"contentId","nameLocation":"6870:9:20","nodeType":"VariableDeclaration","scope":2627,"src":"6862:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2589,"name":"uint256","nodeType":"ElementaryTypeName","src":"6862:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2592,"mutability":"mutable","name":"token","nameLocation":"6897:5:20","nodeType":"VariableDeclaration","scope":2627,"src":"6889:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2591,"name":"address","nodeType":"ElementaryTypeName","src":"6889:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2594,"mutability":"mutable","name":"price","nameLocation":"6920:5:20","nodeType":"VariableDeclaration","scope":2627,"src":"6912:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2593,"name":"uint256","nodeType":"ElementaryTypeName","src":"6912:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6852:79:20"},"returnParameters":{"id":2598,"nodeType":"ParameterList","parameters":[],"src":"6951:0:20"},"scope":3683,"src":"6827:314:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3910],"body":{"id":2698,"nodeType":"Block","src":"7481:391:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2641,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"7495:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7506:6:20","memberName":"length","nodeType":"MemberAccess","src":"7495:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2643,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2636,"src":"7516:6:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7523:6:20","memberName":"length","nodeType":"MemberAccess","src":"7516:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7495:34:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2649,"nodeType":"IfStatement","src":"7491:68:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2646,"name":"ArrayLengthMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3726,"src":"7538:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7538:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2648,"nodeType":"RevertStatement","src":"7531:28:20"}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2650,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"7573:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7590: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":2652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7582:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2651,"name":"address","nodeType":"ElementaryTypeName","src":"7582:7:20","typeDescriptions":{}}},"id":2654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7582:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7573:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2659,"nodeType":"IfStatement","src":"7569:45:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2656,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"7601:11:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7601:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2658,"nodeType":"RevertStatement","src":"7594:20:20"}},{"body":{"id":2696,"nodeType":"Block","src":"7673:193:20","statements":[{"expression":{"id":2684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2671,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"7687:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7696:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"7687:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2677,"indexExpression":{"baseExpression":{"id":2673,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"7711:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2675,"indexExpression":{"id":2674,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"7722:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7711:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7687:38:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7726:11:20","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4059,"src":"7687:50:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2680,"indexExpression":{"id":2679,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"7738:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7687:57:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2681,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2636,"src":"7747:6:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2683,"indexExpression":{"id":2682,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"7771:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7747:39:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7687:99:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2685,"nodeType":"ExpressionStatement","src":"7687:99:20"},{"eventCall":{"arguments":[{"baseExpression":{"id":2687,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"7823:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2689,"indexExpression":{"id":2688,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"7834:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7823:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2690,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2633,"src":"7838:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":2691,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2636,"src":"7845:6:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2693,"indexExpression":{"id":2692,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"7852:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7845:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2686,"name":"TokenPriceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3820,"src":"7805:17:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256)"}},"id":2694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7805:50:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2695,"nodeType":"EmitStatement","src":"7800:55:20"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2664,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"7645:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2665,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2631,"src":"7649:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7660:6:20","memberName":"length","nodeType":"MemberAccess","src":"7649:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7645:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2697,"initializationExpression":{"assignments":[2661],"declarations":[{"constant":false,"id":2661,"mutability":"mutable","name":"i","nameLocation":"7638:1:20","nodeType":"VariableDeclaration","scope":2697,"src":"7630:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2660,"name":"uint256","nodeType":"ElementaryTypeName","src":"7630:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2663,"initialValue":{"hexValue":"30","id":2662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7642:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7630:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7668:3:20","subExpression":{"id":2668,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2661,"src":"7668:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2670,"nodeType":"ExpressionStatement","src":"7668:3:20"},"nodeType":"ForStatement","src":"7625:241:20"}]},"documentation":{"id":2628,"nodeType":"StructuredDocumentation","src":"7147:180:20","text":" @dev Batch update token prices for multiple contents\n @param contentIds Content ID array\n @param token Token address\n @param prices Price array"},"functionSelector":"8f0ff11b","id":2699,"implemented":true,"kind":"function","modifiers":[{"id":2639,"kind":"modifierInvocation","modifierName":{"id":2638,"name":"onlyAdmin","nameLocations":["7471:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2138,"src":"7471:9:20"},"nodeType":"ModifierInvocation","src":"7471:9:20"}],"name":"batchUpdateTokenPrice","nameLocation":"7341:21:20","nodeType":"FunctionDefinition","parameters":{"id":2637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2631,"mutability":"mutable","name":"contentIds","nameLocation":"7389:10:20","nodeType":"VariableDeclaration","scope":2699,"src":"7372:27:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2629,"name":"uint256","nodeType":"ElementaryTypeName","src":"7372:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2630,"nodeType":"ArrayTypeName","src":"7372:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2633,"mutability":"mutable","name":"token","nameLocation":"7417:5:20","nodeType":"VariableDeclaration","scope":2699,"src":"7409:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2632,"name":"address","nodeType":"ElementaryTypeName","src":"7409:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2636,"mutability":"mutable","name":"prices","nameLocation":"7449:6:20","nodeType":"VariableDeclaration","scope":2699,"src":"7432:23:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2634,"name":"uint256","nodeType":"ElementaryTypeName","src":"7432:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2635,"nodeType":"ArrayTypeName","src":"7432:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7362:99:20"},"returnParameters":{"id":2640,"nodeType":"ParameterList","parameters":[],"src":"7481:0:20"},"scope":3683,"src":"7332:540:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3917],"body":{"id":2723,"nodeType":"Block","src":"8110:122:20","statements":[{"expression":{"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2709,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"8120:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2712,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8129:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"8120:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2713,"indexExpression":{"id":2711,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2702,"src":"8144:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8120:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8155:11:20","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4061,"src":"8120:46:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2715,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"8169:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8120:54:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2717,"nodeType":"ExpressionStatement","src":"8120:54:20"},{"eventCall":{"arguments":[{"id":2719,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2702,"src":"8208:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2720,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"8219:5:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2718,"name":"NativePriceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3826,"src":"8189:18:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8189:36:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2722,"nodeType":"EmitStatement","src":"8184:41:20"}]},"documentation":{"id":2700,"nodeType":"StructuredDocumentation","src":"7878:125:20","text":" @dev Update native coin price for content\n @param contentId Content ID\n @param price New price"},"functionSelector":"773f2054","id":2724,"implemented":true,"kind":"function","modifiers":[{"id":2707,"kind":"modifierInvocation","modifierName":{"id":2706,"name":"onlyAdmin","nameLocations":["8100:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2138,"src":"8100:9:20"},"nodeType":"ModifierInvocation","src":"8100:9:20"}],"name":"updateNativePrice","nameLocation":"8017:17:20","nodeType":"FunctionDefinition","parameters":{"id":2705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2702,"mutability":"mutable","name":"contentId","nameLocation":"8052:9:20","nodeType":"VariableDeclaration","scope":2724,"src":"8044:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2701,"name":"uint256","nodeType":"ElementaryTypeName","src":"8044:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2704,"mutability":"mutable","name":"price","nameLocation":"8079:5:20","nodeType":"VariableDeclaration","scope":2724,"src":"8071:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2703,"name":"uint256","nodeType":"ElementaryTypeName","src":"8071:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8034:56:20"},"returnParameters":{"id":2708,"nodeType":"ParameterList","parameters":[],"src":"8110:0:20"},"scope":3683,"src":"8008:224:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3926],"body":{"id":2780,"nodeType":"Block","src":"8522:293:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2736,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"8536:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8547:6:20","memberName":"length","nodeType":"MemberAccess","src":"8536:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":2738,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2731,"src":"8557:6:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8564:6:20","memberName":"length","nodeType":"MemberAccess","src":"8557:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8536:34:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2744,"nodeType":"IfStatement","src":"8532:68:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2741,"name":"ArrayLengthMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3726,"src":"8579:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8579:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2743,"nodeType":"RevertStatement","src":"8572:28:20"}},{"body":{"id":2778,"nodeType":"Block","src":"8659:150:20","statements":[{"expression":{"id":2767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":2756,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"8673:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2761,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8682:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"8673:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2762,"indexExpression":{"baseExpression":{"id":2758,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"8697:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2760,"indexExpression":{"id":2759,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"8708:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8697:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8673:38:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2763,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8712:11:20","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4061,"src":"8673:50:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":2764,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2731,"src":"8726:6:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2766,"indexExpression":{"id":2765,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"8733:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8726:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8673:62:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2768,"nodeType":"ExpressionStatement","src":"8673:62:20"},{"eventCall":{"arguments":[{"baseExpression":{"id":2770,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"8773:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2772,"indexExpression":{"id":2771,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"8784:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8773:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":2773,"name":"prices","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2731,"src":"8788:6:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2775,"indexExpression":{"id":2774,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"8795:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8788:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2769,"name":"NativePriceUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3826,"src":"8754:18:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8754:44:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2777,"nodeType":"EmitStatement","src":"8749:49:20"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2749,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"8631:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2750,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2728,"src":"8635:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8646:6:20","memberName":"length","nodeType":"MemberAccess","src":"8635:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8631:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2779,"initializationExpression":{"assignments":[2746],"declarations":[{"constant":false,"id":2746,"mutability":"mutable","name":"i","nameLocation":"8624:1:20","nodeType":"VariableDeclaration","scope":2779,"src":"8616:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2745,"name":"uint256","nodeType":"ElementaryTypeName","src":"8616:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2748,"initialValue":{"hexValue":"30","id":2747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8628:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8616:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8654:3:20","subExpression":{"id":2753,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"8654:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2755,"nodeType":"ExpressionStatement","src":"8654:3:20"},"nodeType":"ForStatement","src":"8611:198:20"}]},"documentation":{"id":2725,"nodeType":"StructuredDocumentation","src":"8238:152:20","text":" @dev Batch update native coin prices for multiple contents\n @param contentIds Content ID array\n @param prices Price array"},"functionSelector":"f1aa52f4","id":2781,"implemented":true,"kind":"function","modifiers":[{"id":2734,"kind":"modifierInvocation","modifierName":{"id":2733,"name":"onlyAdmin","nameLocations":["8512:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2138,"src":"8512:9:20"},"nodeType":"ModifierInvocation","src":"8512:9:20"}],"name":"batchUpdateNativePrice","nameLocation":"8404:22:20","nodeType":"FunctionDefinition","parameters":{"id":2732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2728,"mutability":"mutable","name":"contentIds","nameLocation":"8453:10:20","nodeType":"VariableDeclaration","scope":2781,"src":"8436:27:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2726,"name":"uint256","nodeType":"ElementaryTypeName","src":"8436:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2727,"nodeType":"ArrayTypeName","src":"8436:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2731,"mutability":"mutable","name":"prices","nameLocation":"8490:6:20","nodeType":"VariableDeclaration","scope":2781,"src":"8473:23:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2729,"name":"uint256","nodeType":"ElementaryTypeName","src":"8473:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2730,"nodeType":"ArrayTypeName","src":"8473:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"8426:76:20"},"returnParameters":{"id":2735,"nodeType":"ParameterList","parameters":[],"src":"8522:0:20"},"scope":3683,"src":"8395:420:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3931],"body":{"id":2811,"nodeType":"Block","src":"9040:151:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2789,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"9054:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9071: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":2791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9063:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2790,"name":"address","nodeType":"ElementaryTypeName","src":"9063:7:20","typeDescriptions":{}}},"id":2793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9063:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9054:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2798,"nodeType":"IfStatement","src":"9050:45:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2795,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"9082:11:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9082:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2797,"nodeType":"RevertStatement","src":"9075:20:20"}},{"expression":{"id":2805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2799,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"9105:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9114:15:20","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4097,"src":"9105:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2803,"indexExpression":{"id":2801,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"9130:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9105:31:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":2804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9139:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"9105:38:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2806,"nodeType":"ExpressionStatement","src":"9105:38:20"},{"eventCall":{"arguments":[{"id":2808,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"9178:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2807,"name":"SupportedTokenAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3830,"src":"9158:19:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9158:26:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2810,"nodeType":"EmitStatement","src":"9153:31:20"}]},"documentation":{"id":2782,"nodeType":"StructuredDocumentation","src":"8890:84:20","text":" @dev Add supported token\n @param token Token address to add"},"functionSelector":"6d69fcaf","id":2812,"implemented":true,"kind":"function","modifiers":[{"id":2787,"kind":"modifierInvocation","modifierName":{"id":2786,"name":"onlyAdmin","nameLocations":["9030:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2138,"src":"9030:9:20"},"nodeType":"ModifierInvocation","src":"9030:9:20"}],"name":"addSupportedToken","nameLocation":"8988:17:20","nodeType":"FunctionDefinition","parameters":{"id":2785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2784,"mutability":"mutable","name":"token","nameLocation":"9014:5:20","nodeType":"VariableDeclaration","scope":2812,"src":"9006:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2783,"name":"address","nodeType":"ElementaryTypeName","src":"9006:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9005:15:20"},"returnParameters":{"id":2788,"nodeType":"ParameterList","parameters":[],"src":"9040:0:20"},"scope":3683,"src":"8979:212:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3936],"body":{"id":2842,"nodeType":"Block","src":"9356:154:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2820,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"9370:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9387: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":2822,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9379:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2821,"name":"address","nodeType":"ElementaryTypeName","src":"9379:7:20","typeDescriptions":{}}},"id":2824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9379:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9370:19:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2829,"nodeType":"IfStatement","src":"9366:45:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2826,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3728,"src":"9398:11:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9398:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2828,"nodeType":"RevertStatement","src":"9391:20:20"}},{"expression":{"id":2836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":2830,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"9421:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9430:15:20","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4097,"src":"9421:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2834,"indexExpression":{"id":2832,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"9446:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9421:31:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":2835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9455:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"9421:39:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2837,"nodeType":"ExpressionStatement","src":"9421:39:20"},{"eventCall":{"arguments":[{"id":2839,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2815,"src":"9497:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2838,"name":"SupportedTokenRemoved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3834,"src":"9475:21:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9475:28:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2841,"nodeType":"EmitStatement","src":"9470:33:20"}]},"documentation":{"id":2813,"nodeType":"StructuredDocumentation","src":"9197:90:20","text":" @dev Remove supported token\n @param token Token address to remove"},"functionSelector":"76319190","id":2843,"implemented":true,"kind":"function","modifiers":[{"id":2818,"kind":"modifierInvocation","modifierName":{"id":2817,"name":"onlyAdmin","nameLocations":["9346:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2138,"src":"9346:9:20"},"nodeType":"ModifierInvocation","src":"9346:9:20"}],"name":"removeSupportedToken","nameLocation":"9301:20:20","nodeType":"FunctionDefinition","parameters":{"id":2816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2815,"mutability":"mutable","name":"token","nameLocation":"9330:5:20","nodeType":"VariableDeclaration","scope":2843,"src":"9322:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2814,"name":"address","nodeType":"ElementaryTypeName","src":"9322:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9321:15:20"},"returnParameters":{"id":2819,"nodeType":"ParameterList","parameters":[],"src":"9356:0:20"},"scope":3683,"src":"9292:218:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3943],"body":{"id":2856,"nodeType":"Block","src":"9727:55:20","statements":[{"expression":{"baseExpression":{"expression":{"id":2851,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"9744:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2852,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9753:15:20","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4097,"src":"9744:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2854,"indexExpression":{"id":2853,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2846,"src":"9769:5:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9744:31:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2850,"id":2855,"nodeType":"Return","src":"9737:38:20"}]},"documentation":{"id":2844,"nodeType":"StructuredDocumentation","src":"9516:136:20","text":" @dev Check if token is supported\n @param token Token address to check\n @return Whether token is supported"},"functionSelector":"240028e8","id":2857,"implemented":true,"kind":"function","modifiers":[],"name":"isSupportedToken","nameLocation":"9666:16:20","nodeType":"FunctionDefinition","parameters":{"id":2847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2846,"mutability":"mutable","name":"token","nameLocation":"9691:5:20","nodeType":"VariableDeclaration","scope":2857,"src":"9683:13:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2845,"name":"address","nodeType":"ElementaryTypeName","src":"9683:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9682:15:20"},"returnParameters":{"id":2850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2849,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2857,"src":"9721:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2848,"name":"bool","nodeType":"ElementaryTypeName","src":"9721:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9720:6:20"},"scope":3683,"src":"9657:125:20","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3952],"body":{"id":2940,"nodeType":"Block","src":"10195:785:20","statements":[{"condition":{"id":2878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10209:39:20","subExpression":{"baseExpression":{"expression":{"id":2874,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"10210:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10219:15:20","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4097,"src":"10210:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":2877,"indexExpression":{"id":2876,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"10235:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10210:38:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2882,"nodeType":"IfStatement","src":"10205:70:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2879,"name":"UnsupportedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3720,"src":"10257:16:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10257:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2881,"nodeType":"RevertStatement","src":"10250:25:20"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":2883,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"10302:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2884,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10311:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"10302:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2886,"indexExpression":{"id":2885,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"10326:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10302:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10337:11:20","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4059,"src":"10302:46:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":2889,"indexExpression":{"id":2888,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"10349:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10302:60:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":2890,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"10378:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10302:82:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2895,"nodeType":"IfStatement","src":"10285:138:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2892,"name":"InsufficientPayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3722,"src":"10402:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10402:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2894,"nodeType":"RevertStatement","src":"10395:28:20"}},{"expression":{"arguments":[{"expression":{"id":2900,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10496:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10500:6:20","memberName":"sender","nodeType":"MemberAccess","src":"10496:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":2904,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10516:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_VideoPayment_$3683","typeString":"contract VideoPayment"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VideoPayment_$3683","typeString":"contract VideoPayment"}],"id":2903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10508:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2902,"name":"address","nodeType":"ElementaryTypeName","src":"10508:7:20","typeDescriptions":{}}},"id":2905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10508:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2906,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"10523: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":2897,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"10469:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2896,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"10462:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1520_$","typeString":"type(contract IERC20)"}},"id":2898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10462:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1520","typeString":"contract IERC20"}},"id":2899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10483:12:20","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1519,"src":"10462:33: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":2907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10462:68:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2908,"nodeType":"ExpressionStatement","src":"10462:68:20"},{"expression":{"arguments":[{"expression":{"id":2910,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10597:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10601:6:20","memberName":"sender","nodeType":"MemberAccess","src":"10597:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2912,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"10609:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2909,"name":"_createViewPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"10575:21:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10575:44:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2914,"nodeType":"ExpressionStatement","src":"10575:44:20"},{"assignments":[2916],"declarations":[{"constant":false,"id":2916,"mutability":"mutable","name":"validUntil","nameLocation":"10660:10:20","nodeType":"VariableDeclaration","scope":2940,"src":"10652:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2915,"name":"uint256","nodeType":"ElementaryTypeName","src":"10652:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2925,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2917,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"10673:5:20","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10679:9:20","memberName":"timestamp","nodeType":"MemberAccess","src":"10673:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"baseExpression":{"expression":{"id":2919,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"10703:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2920,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10712:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"10703:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2922,"indexExpression":{"id":2921,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"10727:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10703:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10738:12:20","memberName":"viewDuration","nodeType":"MemberAccess","referencedDeclaration":4065,"src":"10703:47:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10673:77:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10652:98:20"},{"eventCall":{"arguments":[{"expression":{"id":2927,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10795:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10799:6:20","memberName":"sender","nodeType":"MemberAccess","src":"10795:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2929,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"10819:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2930,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"10842:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2931,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"10868:6:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"expression":{"id":2932,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"10888:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2933,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10897:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"10888:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2935,"indexExpression":{"id":2934,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"10912:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10888:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2936,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10923:16:20","memberName":"defaultViewCount","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"10888:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2937,"name":"validUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"10953:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2926,"name":"ContentPurchased","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3744,"src":"10765:16:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,uint256,uint256,uint256)"}},"id":2938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10765:208:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2939,"nodeType":"EmitStatement","src":"10760:213:20"}]},"documentation":{"id":2858,"nodeType":"StructuredDocumentation","src":"9841:177:20","text":" @dev Purchase content with ERC20 token\n @param contentId Content ID\n @param paymentToken Payment token address\n @param amount Payment amount"},"functionSelector":"b6f1d140","id":2941,"implemented":true,"kind":"function","modifiers":[{"id":2867,"kind":"modifierInvocation","modifierName":{"id":2866,"name":"nonReentrant","nameLocations":["10144:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":518,"src":"10144:12:20"},"nodeType":"ModifierInvocation","src":"10144:12:20"},{"id":2869,"kind":"modifierInvocation","modifierName":{"id":2868,"name":"whenNotPaused","nameLocations":["10157:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2148,"src":"10157:13:20"},"nodeType":"ModifierInvocation","src":"10157:13:20"},{"arguments":[{"id":2871,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2860,"src":"10184:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2872,"kind":"modifierInvocation","modifierName":{"id":2870,"name":"validContent","nameLocations":["10171:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":2164,"src":"10171:12:20"},"nodeType":"ModifierInvocation","src":"10171:23:20"}],"name":"purchaseContent","nameLocation":"10032:15:20","nodeType":"FunctionDefinition","parameters":{"id":2865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2860,"mutability":"mutable","name":"contentId","nameLocation":"10065:9:20","nodeType":"VariableDeclaration","scope":2941,"src":"10057:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2859,"name":"uint256","nodeType":"ElementaryTypeName","src":"10057:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2862,"mutability":"mutable","name":"paymentToken","nameLocation":"10092:12:20","nodeType":"VariableDeclaration","scope":2941,"src":"10084:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2861,"name":"address","nodeType":"ElementaryTypeName","src":"10084:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2864,"mutability":"mutable","name":"amount","nameLocation":"10122:6:20","nodeType":"VariableDeclaration","scope":2941,"src":"10114:14:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2863,"name":"uint256","nodeType":"ElementaryTypeName","src":"10114:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10047:87:20"},"returnParameters":{"id":2873,"nodeType":"ParameterList","parameters":[],"src":"10195:0:20"},"scope":3683,"src":"10023:957:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3957],"body":{"id":2997,"nodeType":"Block","src":"11212:541:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2954,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11226:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11230:5:20","memberName":"value","nodeType":"MemberAccess","src":"11226:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"baseExpression":{"expression":{"id":2956,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"11239:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2957,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11248:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"11239:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2959,"indexExpression":{"id":2958,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11263:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11239:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2960,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11274:11:20","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4061,"src":"11239:46:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11226:59:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2965,"nodeType":"IfStatement","src":"11222:105:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2962,"name":"InsufficientPayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3722,"src":"11306:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11306:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2964,"nodeType":"RevertStatement","src":"11299:28:20"}},{"expression":{"arguments":[{"expression":{"id":2967,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11394:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11398:6:20","memberName":"sender","nodeType":"MemberAccess","src":"11394:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2969,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11406:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2966,"name":"_createViewPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"11372:21:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11372:44:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2971,"nodeType":"ExpressionStatement","src":"11372:44:20"},{"assignments":[2973],"declarations":[{"constant":false,"id":2973,"mutability":"mutable","name":"validUntil","nameLocation":"11457:10:20","nodeType":"VariableDeclaration","scope":2997,"src":"11449:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2972,"name":"uint256","nodeType":"ElementaryTypeName","src":"11449:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2982,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2974,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11470:5:20","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":2975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11476:9:20","memberName":"timestamp","nodeType":"MemberAccess","src":"11470:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"baseExpression":{"expression":{"id":2976,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"11500:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11509:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"11500:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2979,"indexExpression":{"id":2978,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11524:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11500:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11535:12:20","memberName":"viewDuration","nodeType":"MemberAccess","referencedDeclaration":4065,"src":"11500:47:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11470:77:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11449:98:20"},{"eventCall":{"arguments":[{"expression":{"id":2984,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11591:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11595:6:20","memberName":"sender","nodeType":"MemberAccess","src":"11591:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2986,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11615:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":2987,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11638:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11642:5:20","memberName":"value","nodeType":"MemberAccess","src":"11638:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"expression":{"id":2989,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"11661:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":2990,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11670:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"11661:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":2992,"indexExpression":{"id":2991,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11685:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11661:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":2993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11696:16:20","memberName":"defaultViewCount","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"11661:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2994,"name":"validUntil","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2973,"src":"11726:10:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2983,"name":"NativePurchased","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3756,"src":"11562:15:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256,uint256)"}},"id":2995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11562:184:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2996,"nodeType":"EmitStatement","src":"11557:189:20"}]},"documentation":{"id":2942,"nodeType":"StructuredDocumentation","src":"10986:92:20","text":" @dev Purchase content with native coin\n @param contentId Content ID"},"functionSelector":"c3c12e69","id":2998,"implemented":true,"kind":"function","modifiers":[{"id":2947,"kind":"modifierInvocation","modifierName":{"id":2946,"name":"nonReentrant","nameLocations":["11161:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":518,"src":"11161:12:20"},"nodeType":"ModifierInvocation","src":"11161:12:20"},{"id":2949,"kind":"modifierInvocation","modifierName":{"id":2948,"name":"whenNotPaused","nameLocations":["11174:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2148,"src":"11174:13:20"},"nodeType":"ModifierInvocation","src":"11174:13:20"},{"arguments":[{"id":2951,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2944,"src":"11201:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2952,"kind":"modifierInvocation","modifierName":{"id":2950,"name":"validContent","nameLocations":["11188:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":2164,"src":"11188:12:20"},"nodeType":"ModifierInvocation","src":"11188:23:20"}],"name":"purchaseWithNative","nameLocation":"11092:18:20","nodeType":"FunctionDefinition","parameters":{"id":2945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2944,"mutability":"mutable","name":"contentId","nameLocation":"11128:9:20","nodeType":"VariableDeclaration","scope":2998,"src":"11120:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2943,"name":"uint256","nodeType":"ElementaryTypeName","src":"11120:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11110:33:20"},"returnParameters":{"id":2953,"nodeType":"ParameterList","parameters":[],"src":"11212:0:20"},"scope":3683,"src":"11083:670:20","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[3967],"body":{"id":3112,"nodeType":"Block","src":"12126:923:20","statements":[{"condition":{"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12140:39:20","subExpression":{"baseExpression":{"expression":{"id":3013,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"12141:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3014,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12150:15:20","memberName":"supportedTokens","nodeType":"MemberAccess","referencedDeclaration":4097,"src":"12141:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3016,"indexExpression":{"id":3015,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"12166:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12141:38:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3021,"nodeType":"IfStatement","src":"12136:70:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3018,"name":"UnsupportedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3720,"src":"12188:16:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12188:18:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3020,"nodeType":"RevertStatement","src":"12181:25:20"}},{"assignments":[3023],"declarations":[{"constant":false,"id":3023,"mutability":"mutable","name":"expectedTotal","nameLocation":"12225:13:20","nodeType":"VariableDeclaration","scope":3112,"src":"12217:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3022,"name":"uint256","nodeType":"ElementaryTypeName","src":"12217:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3025,"initialValue":{"hexValue":"30","id":3024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12241:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12217:25:20"},{"body":{"id":3061,"nodeType":"Block","src":"12300:243:20","statements":[{"condition":{"id":3044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"12318:48:20","subExpression":{"expression":{"baseExpression":{"expression":{"id":3037,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"12319:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3038,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12328:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"12319:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3042,"indexExpression":{"baseExpression":{"id":3039,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"12343:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3041,"indexExpression":{"id":3040,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3027,"src":"12354:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12343:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12319:38:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3043,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12358:8:20","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4067,"src":"12319:47:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3048,"nodeType":"IfStatement","src":"12314:93:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3045,"name":"InvalidContent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3718,"src":"12391:14:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12391:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3047,"nodeType":"RevertStatement","src":"12384:23:20"}},{"expression":{"id":3059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3049,"name":"expectedTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3023,"src":"12421:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":3050,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"12438:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12447:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"12438:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3055,"indexExpression":{"baseExpression":{"id":3052,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"12462:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3054,"indexExpression":{"id":3053,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3027,"src":"12473:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12462:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12438:38:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12477:11:20","memberName":"tokenPrices","nodeType":"MemberAccess","referencedDeclaration":4059,"src":"12438:50:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":3058,"indexExpression":{"id":3057,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"12506:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12438:94:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12421:111:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3060,"nodeType":"ExpressionStatement","src":"12421:111:20"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3030,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3027,"src":"12272:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3031,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"12276:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12287:6:20","memberName":"length","nodeType":"MemberAccess","src":"12276:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12272:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3062,"initializationExpression":{"assignments":[3027],"declarations":[{"constant":false,"id":3027,"mutability":"mutable","name":"i","nameLocation":"12265:1:20","nodeType":"VariableDeclaration","scope":3062,"src":"12257:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3026,"name":"uint256","nodeType":"ElementaryTypeName","src":"12257:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3029,"initialValue":{"hexValue":"30","id":3028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12269:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12257:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12295:3:20","subExpression":{"id":3034,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3027,"src":"12295:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3036,"nodeType":"ExpressionStatement","src":"12295:3:20"},"nodeType":"ForStatement","src":"12252:291:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3063,"name":"totalAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"12557:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3064,"name":"expectedTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3023,"src":"12572:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12557:28:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3069,"nodeType":"IfStatement","src":"12553:62:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3066,"name":"InsufficientPayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3722,"src":"12594:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12594:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3068,"nodeType":"RevertStatement","src":"12587:28:20"}},{"expression":{"arguments":[{"expression":{"id":3074,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12701:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12705:6:20","memberName":"sender","nodeType":"MemberAccess","src":"12701:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3078,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12733:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_VideoPayment_$3683","typeString":"contract VideoPayment"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VideoPayment_$3683","typeString":"contract VideoPayment"}],"id":3077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12725:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3076,"name":"address","nodeType":"ElementaryTypeName","src":"12725:7:20","typeDescriptions":{}}},"id":3079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12725:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3080,"name":"totalAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"12752:11: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":3071,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"12661:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3070,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1520,"src":"12654:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$1520_$","typeString":"type(contract IERC20)"}},"id":3072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12654:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$1520","typeString":"contract IERC20"}},"id":3073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12675:12:20","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1519,"src":"12654:33: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":3081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12654:119:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3082,"nodeType":"ExpressionStatement","src":"12654:119:20"},{"body":{"id":3102,"nodeType":"Block","src":"12867:73:20","statements":[{"expression":{"arguments":[{"expression":{"id":3095,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12903:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12907:6:20","memberName":"sender","nodeType":"MemberAccess","src":"12903:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3097,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"12915:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3099,"indexExpression":{"id":3098,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3084,"src":"12926:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12915:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3094,"name":"_createViewPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"12881:21:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12881:48:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3101,"nodeType":"ExpressionStatement","src":"12881:48:20"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3087,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3084,"src":"12839:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3088,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"12843:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12854:6:20","memberName":"length","nodeType":"MemberAccess","src":"12843:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12839:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3103,"initializationExpression":{"assignments":[3084],"declarations":[{"constant":false,"id":3084,"mutability":"mutable","name":"i","nameLocation":"12832:1:20","nodeType":"VariableDeclaration","scope":3103,"src":"12824:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3083,"name":"uint256","nodeType":"ElementaryTypeName","src":"12824:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3086,"initialValue":{"hexValue":"30","id":3085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12836:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12824:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12862:3:20","subExpression":{"id":3091,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3084,"src":"12862:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3093,"nodeType":"ExpressionStatement","src":"12862:3:20"},"nodeType":"ForStatement","src":"12819:121:20"},{"eventCall":{"arguments":[{"expression":{"id":3105,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12992:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12996:6:20","memberName":"sender","nodeType":"MemberAccess","src":"12992:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3107,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"13004:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":3108,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"13016:12:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3109,"name":"totalAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3006,"src":"13030:11:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3104,"name":"BatchPurchased","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3767,"src":"12977:14:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256[] memory,address,uint256)"}},"id":3110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12977:65:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3111,"nodeType":"EmitStatement","src":"12972:70:20"}]},"documentation":{"id":2999,"nodeType":"StructuredDocumentation","src":"11759:201:20","text":" @dev Batch purchase content with ERC20 token\n @param contentIds Content ID array\n @param paymentToken Payment token address\n @param totalAmount Total payment amount"},"functionSelector":"99ea24fe","id":3113,"implemented":true,"kind":"function","modifiers":[{"id":3009,"kind":"modifierInvocation","modifierName":{"id":3008,"name":"nonReentrant","nameLocations":["12099:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":518,"src":"12099:12:20"},"nodeType":"ModifierInvocation","src":"12099:12:20"},{"id":3011,"kind":"modifierInvocation","modifierName":{"id":3010,"name":"whenNotPaused","nameLocations":["12112:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2148,"src":"12112:13:20"},"nodeType":"ModifierInvocation","src":"12112:13:20"}],"name":"batchPurchase","nameLocation":"11974:13:20","nodeType":"FunctionDefinition","parameters":{"id":3007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3002,"mutability":"mutable","name":"contentIds","nameLocation":"12014:10:20","nodeType":"VariableDeclaration","scope":3113,"src":"11997:27:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3000,"name":"uint256","nodeType":"ElementaryTypeName","src":"11997:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3001,"nodeType":"ArrayTypeName","src":"11997:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3004,"mutability":"mutable","name":"paymentToken","nameLocation":"12042:12:20","nodeType":"VariableDeclaration","scope":3113,"src":"12034:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3003,"name":"address","nodeType":"ElementaryTypeName","src":"12034:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3006,"mutability":"mutable","name":"totalAmount","nameLocation":"12072:11:20","nodeType":"VariableDeclaration","scope":3113,"src":"12064:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3005,"name":"uint256","nodeType":"ElementaryTypeName","src":"12064:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11987:102:20"},"returnParameters":{"id":3012,"nodeType":"ParameterList","parameters":[],"src":"12126:0:20"},"scope":3683,"src":"11965:1084:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3973],"body":{"id":3200,"nodeType":"Block","src":"13285:628:20","statements":[{"assignments":[3125],"declarations":[{"constant":false,"id":3125,"mutability":"mutable","name":"expectedTotal","nameLocation":"13303:13:20","nodeType":"VariableDeclaration","scope":3200,"src":"13295:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3124,"name":"uint256","nodeType":"ElementaryTypeName","src":"13295:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3127,"initialValue":{"hexValue":"30","id":3126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13319:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13295:25:20"},{"body":{"id":3161,"nodeType":"Block","src":"13378:199:20","statements":[{"condition":{"id":3146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13396:48:20","subExpression":{"expression":{"baseExpression":{"expression":{"id":3139,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"13397:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13406:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"13397:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3144,"indexExpression":{"baseExpression":{"id":3141,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"13421:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3143,"indexExpression":{"id":3142,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3129,"src":"13432:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13421:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13397:38:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13436:8:20","memberName":"isActive","nodeType":"MemberAccess","referencedDeclaration":4067,"src":"13397:47:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3150,"nodeType":"IfStatement","src":"13392:93:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3147,"name":"InvalidContent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3718,"src":"13469:14:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13469:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3149,"nodeType":"RevertStatement","src":"13462:23:20"}},{"expression":{"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3151,"name":"expectedTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3125,"src":"13499:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"baseExpression":{"expression":{"id":3152,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"13516:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3153,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13525:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"13516:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3157,"indexExpression":{"baseExpression":{"id":3154,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"13540:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3156,"indexExpression":{"id":3155,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3129,"src":"13551:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13540:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13516:38:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13555:11:20","memberName":"nativePrice","nodeType":"MemberAccess","referencedDeclaration":4061,"src":"13516:50:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13499:67:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3160,"nodeType":"ExpressionStatement","src":"13499:67:20"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3132,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3129,"src":"13350:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3133,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"13354:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13365:6:20","memberName":"length","nodeType":"MemberAccess","src":"13354:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13350:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3162,"initializationExpression":{"assignments":[3129],"declarations":[{"constant":false,"id":3129,"mutability":"mutable","name":"i","nameLocation":"13343:1:20","nodeType":"VariableDeclaration","scope":3162,"src":"13335:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3128,"name":"uint256","nodeType":"ElementaryTypeName","src":"13335:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3131,"initialValue":{"hexValue":"30","id":3130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13347:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13335:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13373:3:20","subExpression":{"id":3136,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3129,"src":"13373:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3138,"nodeType":"ExpressionStatement","src":"13373:3:20"},"nodeType":"ForStatement","src":"13330:247:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3163,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13591:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13595:5:20","memberName":"value","nodeType":"MemberAccess","src":"13591:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3165,"name":"expectedTotal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3125,"src":"13604:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13591:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3170,"nodeType":"IfStatement","src":"13587:60:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3167,"name":"InsufficientPayment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3722,"src":"13626:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13626:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3169,"nodeType":"RevertStatement","src":"13619:28:20"}},{"body":{"id":3190,"nodeType":"Block","src":"13741:73:20","statements":[{"expression":{"arguments":[{"expression":{"id":3183,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13777:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13781:6:20","memberName":"sender","nodeType":"MemberAccess","src":"13777:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3185,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"13789:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3187,"indexExpression":{"id":3186,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3172,"src":"13800:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13789:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3182,"name":"_createViewPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"13755:21:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13755:48:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3189,"nodeType":"ExpressionStatement","src":"13755:48:20"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3175,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3172,"src":"13713:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3176,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"13717:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13728:6:20","memberName":"length","nodeType":"MemberAccess","src":"13717:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13713:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3191,"initializationExpression":{"assignments":[3172],"declarations":[{"constant":false,"id":3172,"mutability":"mutable","name":"i","nameLocation":"13706:1:20","nodeType":"VariableDeclaration","scope":3191,"src":"13698:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3171,"name":"uint256","nodeType":"ElementaryTypeName","src":"13698:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3174,"initialValue":{"hexValue":"30","id":3173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13710:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13698:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13736:3:20","subExpression":{"id":3179,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3172,"src":"13736:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3181,"nodeType":"ExpressionStatement","src":"13736:3:20"},"nodeType":"ForStatement","src":"13693:121:20"},{"eventCall":{"arguments":[{"expression":{"id":3193,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13872:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13876:6:20","memberName":"sender","nodeType":"MemberAccess","src":"13872:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3195,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3117,"src":"13884:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"expression":{"id":3196,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13896:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13900:5:20","memberName":"value","nodeType":"MemberAccess","src":"13896:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3192,"name":"BatchNativePurchased","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3776,"src":"13851:20:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,uint256[] memory,uint256)"}},"id":3198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13851:55:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3199,"nodeType":"EmitStatement","src":"13846:60:20"}]},"documentation":{"id":3114,"nodeType":"StructuredDocumentation","src":"13055:105:20","text":" @dev Batch purchase content with native coin\n @param contentIds Content ID array"},"functionSelector":"21f06438","id":3201,"implemented":true,"kind":"function","modifiers":[{"id":3120,"kind":"modifierInvocation","modifierName":{"id":3119,"name":"nonReentrant","nameLocations":["13258:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":518,"src":"13258:12:20"},"nodeType":"ModifierInvocation","src":"13258:12:20"},{"id":3122,"kind":"modifierInvocation","modifierName":{"id":3121,"name":"whenNotPaused","nameLocations":["13271:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2148,"src":"13271:13:20"},"nodeType":"ModifierInvocation","src":"13271:13:20"}],"name":"batchPurchaseWithNative","nameLocation":"13174:23:20","nodeType":"FunctionDefinition","parameters":{"id":3118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3117,"mutability":"mutable","name":"contentIds","nameLocation":"13224:10:20","nodeType":"VariableDeclaration","scope":3201,"src":"13207:27:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3115,"name":"uint256","nodeType":"ElementaryTypeName","src":"13207:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3116,"nodeType":"ArrayTypeName","src":"13207:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"13197:43:20"},"returnParameters":{"id":3123,"nodeType":"ParameterList","parameters":[],"src":"13285:0:20"},"scope":3683,"src":"13165:748:20","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[3982],"body":{"id":3258,"nodeType":"Block","src":"14262:474:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3222,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"14336:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":3219,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3206,"src":"14315:11:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3218,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"14307:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1637_$","typeString":"type(contract IERC721)"}},"id":3220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14307:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$1637","typeString":"contract IERC721"}},"id":3221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14328:7:20","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":1570,"src":"14307:28:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view external returns (address)"}},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14307:37:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3224,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14348:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14352:6:20","memberName":"sender","nodeType":"MemberAccess","src":"14348:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14307:51:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3230,"nodeType":"IfStatement","src":"14303:95:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3227,"name":"NoValidPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3724,"src":"14379:17:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14379:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3229,"nodeType":"RevertStatement","src":"14372:26:20"}},{"expression":{"arguments":[{"expression":{"id":3235,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14510:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14514:6:20","memberName":"sender","nodeType":"MemberAccess","src":"14510:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3239,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"14530:4:20","typeDescriptions":{"typeIdentifier":"t_contract$_VideoPayment_$3683","typeString":"contract VideoPayment"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VideoPayment_$3683","typeString":"contract VideoPayment"}],"id":3238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14522:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3237,"name":"address","nodeType":"ElementaryTypeName","src":"14522:7:20","typeDescriptions":{}}},"id":3240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14522:13:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3241,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"14537:7: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":3232,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3206,"src":"14484:11:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3231,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1637,"src":"14476:7:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1637_$","typeString":"type(contract IERC721)"}},"id":3233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14476:20:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721_$1637","typeString":"contract IERC721"}},"id":3234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14497:12:20","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":1602,"src":"14476:33:20","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":3242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14476:69:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3243,"nodeType":"ExpressionStatement","src":"14476:69:20"},{"expression":{"arguments":[{"expression":{"id":3245,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14612:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14616:6:20","memberName":"sender","nodeType":"MemberAccess","src":"14612:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3247,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3204,"src":"14624:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3244,"name":"_createViewPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3288,"src":"14590:21:20","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14590:44:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3249,"nodeType":"ExpressionStatement","src":"14590:44:20"},{"eventCall":{"arguments":[{"expression":{"id":3251,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14685:3:20","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14689:6:20","memberName":"sender","nodeType":"MemberAccess","src":"14685:10:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3253,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3204,"src":"14697:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3254,"name":"nftContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3206,"src":"14708:11:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3255,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3208,"src":"14721:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3250,"name":"NFTPurchased","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3786,"src":"14672:12:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,uint256)"}},"id":3256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14672:57:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3257,"nodeType":"EmitStatement","src":"14667:62:20"}]},"documentation":{"id":3202,"nodeType":"StructuredDocumentation","src":"13919:166:20","text":" @dev Purchase content with NFT\n @param contentId Content ID\n @param nftContract NFT contract address\n @param tokenId NFT token ID"},"functionSelector":"86778641","id":3259,"implemented":true,"kind":"function","modifiers":[{"id":3211,"kind":"modifierInvocation","modifierName":{"id":3210,"name":"nonReentrant","nameLocations":["14211:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":518,"src":"14211:12:20"},"nodeType":"ModifierInvocation","src":"14211:12:20"},{"id":3213,"kind":"modifierInvocation","modifierName":{"id":3212,"name":"whenNotPaused","nameLocations":["14224:13:20"],"nodeType":"IdentifierPath","referencedDeclaration":2148,"src":"14224:13:20"},"nodeType":"ModifierInvocation","src":"14224:13:20"},{"arguments":[{"id":3215,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3204,"src":"14251:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3216,"kind":"modifierInvocation","modifierName":{"id":3214,"name":"validContent","nameLocations":["14238:12:20"],"nodeType":"IdentifierPath","referencedDeclaration":2164,"src":"14238:12:20"},"nodeType":"ModifierInvocation","src":"14238:23:20"}],"name":"purchaseWithNFT","nameLocation":"14099:15:20","nodeType":"FunctionDefinition","parameters":{"id":3209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3204,"mutability":"mutable","name":"contentId","nameLocation":"14132:9:20","nodeType":"VariableDeclaration","scope":3259,"src":"14124:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3203,"name":"uint256","nodeType":"ElementaryTypeName","src":"14124:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3206,"mutability":"mutable","name":"nftContract","nameLocation":"14159:11:20","nodeType":"VariableDeclaration","scope":3259,"src":"14151:19:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3205,"name":"address","nodeType":"ElementaryTypeName","src":"14151:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3208,"mutability":"mutable","name":"tokenId","nameLocation":"14188:7:20","nodeType":"VariableDeclaration","scope":3259,"src":"14180:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3207,"name":"uint256","nodeType":"ElementaryTypeName","src":"14180:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14114:87:20"},"returnParameters":{"id":3217,"nodeType":"ParameterList","parameters":[],"src":"14262:0:20"},"scope":3683,"src":"14090:646:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3287,"nodeType":"Block","src":"14954:329:20","statements":[{"expression":{"id":3285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":3267,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"14964:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3271,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14973:15:20","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4093,"src":"14964:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3272,"indexExpression":{"id":3269,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3262,"src":"14989:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14964:30:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3273,"indexExpression":{"id":3270,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"14995:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14964:41:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":3276,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15088:5:20","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15094:9:20","memberName":"timestamp","nodeType":"MemberAccess","src":"15088:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"expression":{"id":3278,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"15137:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3279,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15167:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"15137:44:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3281,"indexExpression":{"id":3280,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3264,"src":"15182:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15137:55:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15214:16:20","memberName":"defaultViewCount","nodeType":"MemberAccess","referencedDeclaration":4063,"src":"15137:93:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":3283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15257:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3274,"name":"VideoPaymentStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4107,"src":"15008:19:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_VideoPaymentStorage_$4107_$","typeString":"type(library VideoPaymentStorage)"}},"id":3275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15041:14:20","memberName":"ViewPermission","nodeType":"MemberAccess","referencedDeclaration":4075,"src":"15008:47:20","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ViewPermission_$4075_storage_ptr_$","typeString":"type(struct VideoPaymentStorage.ViewPermission storage pointer)"}},"id":3284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["15074:12:20","15121:14:20","15248:7:20"],"names":["purchaseTime","remainingViews","isValid"],"nodeType":"FunctionCall","src":"15008:268:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory"}},"src":"14964:312:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"id":3286,"nodeType":"ExpressionStatement","src":"14964:312:20"}]},"documentation":{"id":3260,"nodeType":"StructuredDocumentation","src":"14742:134:20","text":" @dev Internal function to create view permission\n @param user User address\n @param contentId Content ID"},"id":3288,"implemented":true,"kind":"function","modifiers":[],"name":"_createViewPermission","nameLocation":"14890:21:20","nodeType":"FunctionDefinition","parameters":{"id":3265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3262,"mutability":"mutable","name":"user","nameLocation":"14920:4:20","nodeType":"VariableDeclaration","scope":3288,"src":"14912:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3261,"name":"address","nodeType":"ElementaryTypeName","src":"14912:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3264,"mutability":"mutable","name":"contentId","nameLocation":"14934:9:20","nodeType":"VariableDeclaration","scope":3288,"src":"14926:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3263,"name":"uint256","nodeType":"ElementaryTypeName","src":"14926:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14911:33:20"},"returnParameters":{"id":3266,"nodeType":"ParameterList","parameters":[],"src":"14954:0:20"},"scope":3683,"src":"14881:402:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3991],"body":{"id":3339,"nodeType":"Block","src":"15652:491:20","statements":[{"assignments":[3302],"declarations":[{"constant":false,"id":3302,"mutability":"mutable","name":"permission","nameLocation":"15704:10:20","nodeType":"VariableDeclaration","scope":3339,"src":"15662:52:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"},"typeName":{"id":3301,"nodeType":"UserDefinedTypeName","pathNode":{"id":3300,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["15662:19:20","15682:14:20"],"nodeType":"IdentifierPath","referencedDeclaration":4075,"src":"15662:34:20"},"referencedDeclaration":4075,"src":"15662:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"visibility":"internal"}],"id":3309,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":3303,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"15717:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3304,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15739:15:20","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4093,"src":"15717:37:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3306,"indexExpression":{"id":3305,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3291,"src":"15755:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15717:43:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3308,"indexExpression":{"id":3307,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3293,"src":"15761:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15717:54:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"nodeType":"VariableDeclarationStatement","src":"15662:109:20"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"15786:19:20","subExpression":{"expression":{"id":3310,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3302,"src":"15787:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory"}},"id":3311,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15798:7:20","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"15787:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3313,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3302,"src":"15809:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory"}},"id":3314,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15820:14:20","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4072,"src":"15809:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15838:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15809:30:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15786:53:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3321,"nodeType":"IfStatement","src":"15782:96:20","trueBody":{"id":3320,"nodeType":"Block","src":"15841:37:20","statements":[{"expression":{"hexValue":"66616c7365","id":3318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15862:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3297,"id":3319,"nodeType":"Return","src":"15855:12:20"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3322,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15948:5:20","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15954:9:20","memberName":"timestamp","nodeType":"MemberAccess","src":"15948:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3324,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3302,"src":"15978:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory"}},"id":3325,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15989:12:20","memberName":"purchaseTime","nodeType":"MemberAccess","referencedDeclaration":4070,"src":"15978:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"baseExpression":{"expression":{"id":3326,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"16020:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16029:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"16020:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3329,"indexExpression":{"id":3328,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3293,"src":"16044:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16020:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16055:12:20","memberName":"viewDuration","nodeType":"MemberAccess","referencedDeclaration":4065,"src":"16020:47:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15978:89:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15948:119:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3336,"nodeType":"IfStatement","src":"15931:184:20","trueBody":{"id":3335,"nodeType":"Block","src":"16078:37:20","statements":[{"expression":{"hexValue":"66616c7365","id":3333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16099:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3297,"id":3334,"nodeType":"Return","src":"16092:12:20"}]}},{"expression":{"hexValue":"74727565","id":3337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16132:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3297,"id":3338,"nodeType":"Return","src":"16125:11:20"}]},"documentation":{"id":3289,"nodeType":"StructuredDocumentation","src":"15357:179:20","text":" @dev Check if user has valid view permission\n @param user User address\n @param contentId Content ID\n @return Whether user has valid permission"},"functionSelector":"caae24b3","id":3340,"implemented":true,"kind":"function","modifiers":[],"name":"hasViewPermission","nameLocation":"15550:17:20","nodeType":"FunctionDefinition","parameters":{"id":3294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3291,"mutability":"mutable","name":"user","nameLocation":"15585:4:20","nodeType":"VariableDeclaration","scope":3340,"src":"15577:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3290,"name":"address","nodeType":"ElementaryTypeName","src":"15577:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3293,"mutability":"mutable","name":"contentId","nameLocation":"15607:9:20","nodeType":"VariableDeclaration","scope":3340,"src":"15599:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3292,"name":"uint256","nodeType":"ElementaryTypeName","src":"15599:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15567:55:20"},"returnParameters":{"id":3297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3340,"src":"15646:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3295,"name":"bool","nodeType":"ElementaryTypeName","src":"15646:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"15645:6:20"},"scope":3683,"src":"15541:602:20","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4003],"body":{"id":3395,"nodeType":"Block","src":"16487:350:20","statements":[{"assignments":[3358],"declarations":[{"constant":false,"id":3358,"mutability":"mutable","name":"permissions","nameLocation":"16553:11:20","nodeType":"VariableDeclaration","scope":3395,"src":"16497:67:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"},"typeName":{"baseType":{"id":3356,"nodeType":"UserDefinedTypeName","pathNode":{"id":3355,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["16497:19:20","16517:14:20"],"nodeType":"IdentifierPath","referencedDeclaration":4075,"src":"16497:34:20"},"referencedDeclaration":4075,"src":"16497:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"id":3357,"nodeType":"ArrayTypeName","src":"16497:36:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4075_storage_$dyn_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"}},"visibility":"internal"}],"id":3366,"initialValue":{"arguments":[{"expression":{"id":3363,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3346,"src":"16625:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16636:6:20","memberName":"length","nodeType":"MemberAccess","src":"16625:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16567:40:20","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct VideoPaymentStorage.ViewPermission memory[] memory)"},"typeName":{"baseType":{"id":3360,"nodeType":"UserDefinedTypeName","pathNode":{"id":3359,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["16571:19:20","16591:14:20"],"nodeType":"IdentifierPath","referencedDeclaration":4075,"src":"16571:34:20"},"referencedDeclaration":4075,"src":"16571:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"id":3361,"nodeType":"ArrayTypeName","src":"16571:36:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4075_storage_$dyn_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"}}},"id":3365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16567:89:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"16497:159:20"},{"body":{"id":3391,"nodeType":"Block","src":"16715:87:20","statements":[{"expression":{"id":3389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3378,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3358,"src":"16729:11:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory[] memory"}},"id":3380,"indexExpression":{"id":3379,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3368,"src":"16741:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16729:14:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":3381,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"16746:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16755:15:20","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4093,"src":"16746:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3384,"indexExpression":{"id":3383,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3343,"src":"16771:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16746:30:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3388,"indexExpression":{"baseExpression":{"id":3385,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3346,"src":"16777:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3387,"indexExpression":{"id":3386,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3368,"src":"16788:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16777:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16746:45:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"src":"16729:62:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory"}},"id":3390,"nodeType":"ExpressionStatement","src":"16729:62:20"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3371,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3368,"src":"16687:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3372,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3346,"src":"16691:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16702:6:20","memberName":"length","nodeType":"MemberAccess","src":"16691:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16687:21:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3392,"initializationExpression":{"assignments":[3368],"declarations":[{"constant":false,"id":3368,"mutability":"mutable","name":"i","nameLocation":"16680:1:20","nodeType":"VariableDeclaration","scope":3392,"src":"16672:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3367,"name":"uint256","nodeType":"ElementaryTypeName","src":"16672:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3370,"initialValue":{"hexValue":"30","id":3369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16684:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16672:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16710:3:20","subExpression":{"id":3375,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3368,"src":"16710:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3377,"nodeType":"ExpressionStatement","src":"16710:3:20"},"nodeType":"ForStatement","src":"16667:135:20"},{"expression":{"id":3393,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3358,"src":"16819:11:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission memory[] memory"}},"functionReturnParameters":3352,"id":3394,"nodeType":"Return","src":"16812:18:20"}]},"documentation":{"id":3341,"nodeType":"StructuredDocumentation","src":"16149:172:20","text":" @dev Get user permissions for multiple contents\n @param user User address\n @param contentIds Content ID array\n @return Permission array"},"functionSelector":"b303f53f","id":3396,"implemented":true,"kind":"function","modifiers":[],"name":"getUserPermissions","nameLocation":"16335:18:20","nodeType":"FunctionDefinition","parameters":{"id":3347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3343,"mutability":"mutable","name":"user","nameLocation":"16371:4:20","nodeType":"VariableDeclaration","scope":3396,"src":"16363:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3342,"name":"address","nodeType":"ElementaryTypeName","src":"16363:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3346,"mutability":"mutable","name":"contentIds","nameLocation":"16402:10:20","nodeType":"VariableDeclaration","scope":3396,"src":"16385:27:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3344,"name":"uint256","nodeType":"ElementaryTypeName","src":"16385:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3345,"nodeType":"ArrayTypeName","src":"16385:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"16353:65:20"},"returnParameters":{"id":3352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3396,"src":"16442:43:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"},"typeName":{"baseType":{"id":3349,"nodeType":"UserDefinedTypeName","pathNode":{"id":3348,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["16442:19:20","16462:14:20"],"nodeType":"IdentifierPath","referencedDeclaration":4075,"src":"16442:34:20"},"referencedDeclaration":4075,"src":"16442:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"id":3350,"nodeType":"ArrayTypeName","src":"16442:36:20","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4075_storage_$dyn_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"}},"visibility":"internal"}],"src":"16441:45:20"},"scope":3683,"src":"16326:511:20","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4013],"body":{"id":3414,"nodeType":"Block","src":"17152:65:20","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":3407,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"17169:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3408,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17178:15:20","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4093,"src":"17169:24:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3410,"indexExpression":{"id":3409,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"17194:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17169:30:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3412,"indexExpression":{"id":3411,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3401,"src":"17200:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17169:41:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"functionReturnParameters":3406,"id":3413,"nodeType":"Return","src":"17162:48:20"}]},"documentation":{"id":3397,"nodeType":"StructuredDocumentation","src":"16843:153:20","text":" @dev Get detailed permission info\n @param user User address\n @param contentId Content ID\n @return Permission details"},"functionSelector":"8d13660e","id":3415,"implemented":true,"kind":"function","modifiers":[],"name":"getPermissionDetails","nameLocation":"17010:20:20","nodeType":"FunctionDefinition","parameters":{"id":3402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3399,"mutability":"mutable","name":"user","nameLocation":"17048:4:20","nodeType":"VariableDeclaration","scope":3415,"src":"17040:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3398,"name":"address","nodeType":"ElementaryTypeName","src":"17040:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3401,"mutability":"mutable","name":"contentId","nameLocation":"17070:9:20","nodeType":"VariableDeclaration","scope":3415,"src":"17062:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3400,"name":"uint256","nodeType":"ElementaryTypeName","src":"17062:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17030:55:20"},"returnParameters":{"id":3406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3415,"src":"17109:41:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"},"typeName":{"id":3404,"nodeType":"UserDefinedTypeName","pathNode":{"id":3403,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["17109:19:20","17129:14:20"],"nodeType":"IdentifierPath","referencedDeclaration":4075,"src":"17109:34:20"},"referencedDeclaration":4075,"src":"17109:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"visibility":"internal"}],"src":"17108:43:20"},"scope":3683,"src":"17001:216:20","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4022],"body":{"id":3499,"nodeType":"Block","src":"17484:857:20","statements":[{"assignments":[3431],"declarations":[{"constant":false,"id":3431,"mutability":"mutable","name":"permission","nameLocation":"17537:10:20","nodeType":"VariableDeclaration","scope":3499,"src":"17494:53:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"},"typeName":{"id":3430,"nodeType":"UserDefinedTypeName","pathNode":{"id":3429,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["17494:19:20","17514:14:20"],"nodeType":"IdentifierPath","referencedDeclaration":4075,"src":"17494:34:20"},"referencedDeclaration":4075,"src":"17494:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"visibility":"internal"}],"id":3438,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":3432,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"17550:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3433,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17572:15:20","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4093,"src":"17550:37:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3435,"indexExpression":{"id":3434,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3418,"src":"17588:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17550:43:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3437,"indexExpression":{"id":3436,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3420,"src":"17594:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17550:54:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"nodeType":"VariableDeclarationStatement","src":"17494:110:20"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"17619:19:20","subExpression":{"expression":{"id":3439,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"17620:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3440,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17631:7:20","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"17620:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3442,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"17642:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17653:14:20","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4072,"src":"17642:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17671:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17642:30:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17619:53:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3451,"nodeType":"IfStatement","src":"17615:110:20","trueBody":{"id":3450,"nodeType":"Block","src":"17674:51:20","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3447,"name":"NoValidPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3724,"src":"17695:17:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17695:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3449,"nodeType":"RevertStatement","src":"17688:26:20"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3452,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"17795:5:20","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17801:9:20","memberName":"timestamp","nodeType":"MemberAccess","src":"17795:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3454,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"17825:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17836:12:20","memberName":"purchaseTime","nodeType":"MemberAccess","referencedDeclaration":4070,"src":"17825:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"baseExpression":{"expression":{"id":3456,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"17867:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3457,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17876:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"17867:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3459,"indexExpression":{"id":3458,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3420,"src":"17891:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17867:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3460,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17902:12:20","memberName":"viewDuration","nodeType":"MemberAccess","referencedDeclaration":4065,"src":"17867:47:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17825:89:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17795:119:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3467,"nodeType":"IfStatement","src":"17778:198:20","trueBody":{"id":3466,"nodeType":"Block","src":"17925:51:20","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3463,"name":"NoValidPermission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3724,"src":"17946:17:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17946:19:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3465,"nodeType":"RevertStatement","src":"17939:26:20"}]}},{"expression":{"id":3471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"18014:27:20","subExpression":{"expression":{"id":3468,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"18014:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3470,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18025:14:20","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4072,"src":"18014:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3472,"nodeType":"ExpressionStatement","src":"18014:27:20"},{"eventCall":{"arguments":[{"id":3474,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3418,"src":"18070:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3475,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3420,"src":"18076:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3476,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"18087:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18098:14:20","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4072,"src":"18087:25: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":3473,"name":"ViewConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"18057:12:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":3478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18057:56:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3479,"nodeType":"EmitStatement","src":"18052:61:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3480,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"18177:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3481,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18188:14:20","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4072,"src":"18177:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18206:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18177:30:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3496,"nodeType":"IfStatement","src":"18173:140:20","trueBody":{"id":3495,"nodeType":"Block","src":"18209:104:20","statements":[{"expression":{"id":3488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3484,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3431,"src":"18223:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3486,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"18234:7:20","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"18223:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18244:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"18223:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3489,"nodeType":"ExpressionStatement","src":"18223:26:20"},{"eventCall":{"arguments":[{"id":3491,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3418,"src":"18286:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3492,"name":"contentId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3420,"src":"18292:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3490,"name":"PermissionExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3800,"src":"18268:17:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18268:34:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3494,"nodeType":"EmitStatement","src":"18263:39:20"}]}},{"expression":{"hexValue":"74727565","id":3497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"18330:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3426,"id":3498,"nodeType":"Return","src":"18323:11:20"}]},"documentation":{"id":3416,"nodeType":"StructuredDocumentation","src":"17223:146:20","text":" @dev Consume one view for user\n @param user User address\n @param contentId Content ID\n @return Success status"},"functionSelector":"05059571","id":3500,"implemented":true,"kind":"function","modifiers":[{"id":3423,"kind":"modifierInvocation","modifierName":{"id":3422,"name":"onlyAdmin","nameLocations":["17459:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2138,"src":"17459:9:20"},"nodeType":"ModifierInvocation","src":"17459:9:20"}],"name":"consumeView","nameLocation":"17383:11:20","nodeType":"FunctionDefinition","parameters":{"id":3421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3418,"mutability":"mutable","name":"user","nameLocation":"17412:4:20","nodeType":"VariableDeclaration","scope":3500,"src":"17404:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3417,"name":"address","nodeType":"ElementaryTypeName","src":"17404:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3420,"mutability":"mutable","name":"contentId","nameLocation":"17434:9:20","nodeType":"VariableDeclaration","scope":3500,"src":"17426:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3419,"name":"uint256","nodeType":"ElementaryTypeName","src":"17426:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17394:55:20"},"returnParameters":{"id":3426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3425,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3500,"src":"17478:4:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3424,"name":"bool","nodeType":"ElementaryTypeName","src":"17478:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"17477:6:20"},"scope":3683,"src":"17374:967:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4034],"body":{"id":3649,"nodeType":"Block","src":"18675:1301:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3515,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"18689:5:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18695:6:20","memberName":"length","nodeType":"MemberAccess","src":"18689:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":3517,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"18705:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18716:6:20","memberName":"length","nodeType":"MemberAccess","src":"18705:17:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18689:33:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3523,"nodeType":"IfStatement","src":"18685:67:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3520,"name":"ArrayLengthMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3726,"src":"18731:19:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18731:21:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3522,"nodeType":"RevertStatement","src":"18724:28:20"}},{"assignments":[3528],"declarations":[{"constant":false,"id":3528,"mutability":"mutable","name":"results","nameLocation":"18777:7:20","nodeType":"VariableDeclaration","scope":3649,"src":"18763:21:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":3526,"name":"bool","nodeType":"ElementaryTypeName","src":"18763:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3527,"nodeType":"ArrayTypeName","src":"18763:6:20","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"id":3535,"initialValue":{"arguments":[{"expression":{"id":3532,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"18798:5:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18804:6:20","memberName":"length","nodeType":"MemberAccess","src":"18798:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"18787:10:20","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bool[] memory)"},"typeName":{"baseType":{"id":3529,"name":"bool","nodeType":"ElementaryTypeName","src":"18791:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3530,"nodeType":"ArrayTypeName","src":"18791:6:20","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}}},"id":3534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18787:24:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"VariableDeclarationStatement","src":"18763:48:20"},{"body":{"id":3645,"nodeType":"Block","src":"18865:1080:20","statements":[{"assignments":[3551],"declarations":[{"constant":false,"id":3551,"mutability":"mutable","name":"permission","nameLocation":"18922:10:20","nodeType":"VariableDeclaration","scope":3645,"src":"18879:53:20","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"},"typeName":{"id":3550,"nodeType":"UserDefinedTypeName","pathNode":{"id":3549,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["18879:19:20","18899:14:20"],"nodeType":"IdentifierPath","referencedDeclaration":4075,"src":"18879:34:20"},"referencedDeclaration":4075,"src":"18879:34:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"visibility":"internal"}],"id":3562,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"id":3552,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"18935:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3553,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18961:15:20","memberName":"userPermissions","nodeType":"MemberAccess","referencedDeclaration":4093,"src":"18935:41:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref))"}},"id":3557,"indexExpression":{"baseExpression":{"id":3554,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"18977:5:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3556,"indexExpression":{"id":3555,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"18983:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18977:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18935:51:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission storage ref)"}},"id":3561,"indexExpression":{"baseExpression":{"id":3558,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"18987:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3560,"indexExpression":{"id":3559,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"18998:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18987:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18935:66:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage","typeString":"struct VideoPaymentStorage.ViewPermission storage ref"}},"nodeType":"VariableDeclarationStatement","src":"18879:122:20"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"19020:19:20","subExpression":{"expression":{"id":3563,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"19021:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19032:7:20","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"19021:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3566,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"19043:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19054:14:20","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4072,"src":"19043:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19072:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19043:30:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19020:53:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3579,"nodeType":"IfStatement","src":"19016:136:20","trueBody":{"id":3578,"nodeType":"Block","src":"19075:77:20","statements":[{"expression":{"id":3575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3571,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"19093:7:20","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":3573,"indexExpression":{"id":3572,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"19101:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19093:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19106:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"19093:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3576,"nodeType":"ExpressionStatement","src":"19093:18:20"},{"id":3577,"nodeType":"Continue","src":"19129:8:20"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3580,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"19234:5:20","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19240:9:20","memberName":"timestamp","nodeType":"MemberAccess","src":"19234:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3582,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"19268:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3583,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19279:12:20","memberName":"purchaseTime","nodeType":"MemberAccess","referencedDeclaration":4070,"src":"19268:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"baseExpression":{"expression":{"id":3584,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"19314:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3585,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19323:14:20","memberName":"contentConfigs","nodeType":"MemberAccess","referencedDeclaration":4086,"src":"19314:23:20","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig storage ref)"}},"id":3589,"indexExpression":{"baseExpression":{"id":3586,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"19338:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3588,"indexExpression":{"id":3587,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"19349:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19338:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19314:38:20","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage","typeString":"struct VideoPaymentStorage.ContentConfig storage ref"}},"id":3590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19353:12:20","memberName":"viewDuration","nodeType":"MemberAccess","referencedDeclaration":4065,"src":"19314:51:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19268:97:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19234:131:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3601,"nodeType":"IfStatement","src":"19213:244:20","trueBody":{"id":3600,"nodeType":"Block","src":"19380:77:20","statements":[{"expression":{"id":3597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3593,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"19398:7:20","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":3595,"indexExpression":{"id":3594,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"19406:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19398:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19411:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"19398:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3598,"nodeType":"ExpressionStatement","src":"19398:18:20"},{"id":3599,"nodeType":"Continue","src":"19434:8:20"}]}},{"expression":{"id":3605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"19503:27:20","subExpression":{"expression":{"id":3602,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"19503:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3604,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19514:14:20","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4072,"src":"19503:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3606,"nodeType":"ExpressionStatement","src":"19503:27:20"},{"eventCall":{"arguments":[{"baseExpression":{"id":3608,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"19579:5:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3610,"indexExpression":{"id":3609,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"19585:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19579:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3611,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"19605:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3613,"indexExpression":{"id":3612,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"19616:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19605:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3614,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"19636:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3615,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19647:14:20","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4072,"src":"19636:25: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":3607,"name":"ViewConsumed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"19549:12:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256)"}},"id":3616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19549:126:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3617,"nodeType":"EmitStatement","src":"19544:131:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3618,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"19747:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3619,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19758:14:20","memberName":"remainingViews","nodeType":"MemberAccess","referencedDeclaration":4072,"src":"19747:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19776:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19747:30:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3638,"nodeType":"IfStatement","src":"19743:160:20","trueBody":{"id":3637,"nodeType":"Block","src":"19779:124:20","statements":[{"expression":{"id":3626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3622,"name":"permission","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3551,"src":"19797:10:20","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission storage pointer"}},"id":3624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"19808:7:20","memberName":"isValid","nodeType":"MemberAccess","referencedDeclaration":4074,"src":"19797:18:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19818:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"19797:26:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3627,"nodeType":"ExpressionStatement","src":"19797:26:20"},{"eventCall":{"arguments":[{"baseExpression":{"id":3629,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"19864:5:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3631,"indexExpression":{"id":3630,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"19870:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19864:8:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":3632,"name":"contentIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"19874:10:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3634,"indexExpression":{"id":3633,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"19885:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19874:13:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3628,"name":"PermissionExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3800,"src":"19846:17:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19846:42:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3636,"nodeType":"EmitStatement","src":"19841:47:20"}]}},{"expression":{"id":3643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3639,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"19917:7:20","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":3641,"indexExpression":{"id":3640,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"19925:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19917:10:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19930:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"19917:17:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3644,"nodeType":"ExpressionStatement","src":"19917:17:20"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3540,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"18842:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":3541,"name":"users","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"18846:5:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18852:6:20","memberName":"length","nodeType":"MemberAccess","src":"18846:12:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18842:16:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3646,"initializationExpression":{"assignments":[3537],"declarations":[{"constant":false,"id":3537,"mutability":"mutable","name":"i","nameLocation":"18835:1:20","nodeType":"VariableDeclaration","scope":3646,"src":"18827:9:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3536,"name":"uint256","nodeType":"ElementaryTypeName","src":"18827:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3539,"initialValue":{"hexValue":"30","id":3538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18839:1:20","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18827:13:20"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18860:3:20","subExpression":{"id":3544,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3537,"src":"18860:1:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3546,"nodeType":"ExpressionStatement","src":"18860:3:20"},"nodeType":"ForStatement","src":"18822:1123:20"},{"expression":{"id":3647,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3528,"src":"19962:7:20","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"functionReturnParameters":3514,"id":3648,"nodeType":"Return","src":"19955:14:20"}]},"documentation":{"id":3501,"nodeType":"StructuredDocumentation","src":"18347:179:20","text":" @dev Batch consume views for multiple users\n @param users User address array\n @param contentIds Content ID array\n @return Success status array"},"functionSelector":"529e2b32","id":3650,"implemented":true,"kind":"function","modifiers":[{"id":3510,"kind":"modifierInvocation","modifierName":{"id":3509,"name":"onlyAdmin","nameLocations":["18641:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2138,"src":"18641:9:20"},"nodeType":"ModifierInvocation","src":"18641:9:20"}],"name":"batchConsumeView","nameLocation":"18540:16:20","nodeType":"FunctionDefinition","parameters":{"id":3508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3504,"mutability":"mutable","name":"users","nameLocation":"18583:5:20","nodeType":"VariableDeclaration","scope":3650,"src":"18566:22:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3502,"name":"address","nodeType":"ElementaryTypeName","src":"18566:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3503,"nodeType":"ArrayTypeName","src":"18566:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3507,"mutability":"mutable","name":"contentIds","nameLocation":"18615:10:20","nodeType":"VariableDeclaration","scope":3650,"src":"18598:27:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3505,"name":"uint256","nodeType":"ElementaryTypeName","src":"18598:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3506,"nodeType":"ArrayTypeName","src":"18598:9:20","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"18556:75:20"},"returnParameters":{"id":3514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3650,"src":"18660:13:20","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":3511,"name":"bool","nodeType":"ElementaryTypeName","src":"18660:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3512,"nodeType":"ArrayTypeName","src":"18660:6:20","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"18659:15:20"},"scope":3683,"src":"18531:1445:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4037],"body":{"id":3665,"nodeType":"Block","src":"20123:62:20","statements":[{"expression":{"id":3660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3656,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"20133:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3658,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20142:6:20","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":4099,"src":"20133:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20151:4:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"20133:22:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3661,"nodeType":"ExpressionStatement","src":"20133:22:20"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3662,"name":"Paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3836,"src":"20170:6:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20170:8:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3664,"nodeType":"EmitStatement","src":"20165:13:20"}]},"documentation":{"id":3651,"nodeType":"StructuredDocumentation","src":"20044:38:20","text":" @dev Pause contract"},"functionSelector":"8456cb59","id":3666,"implemented":true,"kind":"function","modifiers":[{"id":3654,"kind":"modifierInvocation","modifierName":{"id":3653,"name":"onlyOwner","nameLocations":["20113:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2124,"src":"20113:9:20"},"nodeType":"ModifierInvocation","src":"20113:9:20"}],"name":"pause","nameLocation":"20096:5:20","nodeType":"FunctionDefinition","parameters":{"id":3652,"nodeType":"ParameterList","parameters":[],"src":"20101:2:20"},"returnParameters":{"id":3655,"nodeType":"ParameterList","parameters":[],"src":"20123:0:20"},"scope":3683,"src":"20087:98:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[4040],"body":{"id":3681,"nodeType":"Block","src":"20274:65:20","statements":[{"expression":{"id":3676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":3672,"name":"_storage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2111,"src":"20284:8:20","typeDescriptions":{"typeIdentifier":"t_struct$_VideoPaymentStorageStruct_$4106_storage","typeString":"struct VideoPaymentStorage.VideoPaymentStorageStruct storage ref"}},"id":3674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"20293:6:20","memberName":"paused","nodeType":"MemberAccess","referencedDeclaration":4099,"src":"20284:15:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":3675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20302:5:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"20284:23:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3677,"nodeType":"ExpressionStatement","src":"20284:23:20"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3678,"name":"Unpaused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3838,"src":"20322:8:20","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20322:10:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3680,"nodeType":"EmitStatement","src":"20317:15:20"}]},"documentation":{"id":3667,"nodeType":"StructuredDocumentation","src":"20191:40:20","text":" @dev Unpause contract"},"functionSelector":"3f4ba83a","id":3682,"implemented":true,"kind":"function","modifiers":[{"id":3670,"kind":"modifierInvocation","modifierName":{"id":3669,"name":"onlyOwner","nameLocations":["20264:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":2124,"src":"20264:9:20"},"nodeType":"ModifierInvocation","src":"20264:9:20"}],"name":"unpause","nameLocation":"20245:7:20","nodeType":"FunctionDefinition","parameters":{"id":3668,"nodeType":"ParameterList","parameters":[],"src":"20252:2:20"},"returnParameters":{"id":3671,"nodeType":"ParameterList","parameters":[],"src":"20274:0:20"},"scope":3683,"src":"20236:103:20","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3684,"src":"658:19683:20","usedErrors":[16,19,294,299,480,815,828,1647,1940,3712,3714,3716,3718,3720,3722,3724,3726,3728,3730],"usedEvents":[24,734,3744,3756,3767,3776,3786,3794,3800,3804,3808,3812,3820,3826,3830,3834,3836,3838,3842]}],"src":"32:20310:20"},"id":20},"contracts/VideoPaymentProxy.sol":{"ast":{"absolutePath":"contracts/VideoPaymentProxy.sol","exportedSymbols":{"ERC1967Proxy":[795],"ERC1967Utils":[1089],"IERC1967":[747],"ITransparentUpgradeableProxy":[1205],"ProxyAdmin":[1183],"TransparentUpgradeableProxy":[1319],"VideoPaymentProxy":[3706]},"id":3707,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3685,"literals":["solidity","^","0.8",".19"],"nodeType":"PragmaDirective","src":"32:24:21"},{"absolutePath":"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","file":"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","id":3686,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3707,"sourceUnit":1320,"src":"58:83:21","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3688,"name":"TransparentUpgradeableProxy","nameLocations":["273:27:21"],"nodeType":"IdentifierPath","referencedDeclaration":1319,"src":"273:27:21"},"id":3689,"nodeType":"InheritanceSpecifier","src":"273:27:21"}],"canonicalName":"VideoPaymentProxy","contractDependencies":[1183],"contractKind":"contract","documentation":{"id":3687,"nodeType":"StructuredDocumentation","src":"143:99:21","text":" @title VideoPaymentProxy\n @dev Transparent upgradeable proxy for VideoPayment contract"},"fullyImplemented":true,"id":3706,"linearizedBaseContracts":[3706,1319,795,1125],"name":"VideoPaymentProxy","nameLocation":"252:17:21","nodeType":"ContractDefinition","nodes":[{"body":{"id":3704,"nodeType":"Block","src":"631:2:21","statements":[]},"documentation":{"id":3690,"nodeType":"StructuredDocumentation","src":"307:180:21","text":" @dev Initialize the proxy\n @param logic Address of the logic contract\n @param admin Address of the proxy admin\n @param data Initialization data"},"id":3705,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":3699,"name":"logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3692,"src":"611:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3700,"name":"admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3694,"src":"618:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3701,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3696,"src":"625:4:21","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3702,"kind":"baseConstructorSpecifier","modifierName":{"id":3698,"name":"TransparentUpgradeableProxy","nameLocations":["583:27:21"],"nodeType":"IdentifierPath","referencedDeclaration":1319,"src":"583:27:21"},"nodeType":"ModifierInvocation","src":"583:47:21"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3692,"mutability":"mutable","name":"logic","nameLocation":"521:5:21","nodeType":"VariableDeclaration","scope":3705,"src":"513:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3691,"name":"address","nodeType":"ElementaryTypeName","src":"513:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3694,"mutability":"mutable","name":"admin","nameLocation":"544:5:21","nodeType":"VariableDeclaration","scope":3705,"src":"536:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3693,"name":"address","nodeType":"ElementaryTypeName","src":"536:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3696,"mutability":"mutable","name":"data","nameLocation":"572:4:21","nodeType":"VariableDeclaration","scope":3705,"src":"559:17:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3695,"name":"bytes","nodeType":"ElementaryTypeName","src":"559:5:21","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"503:79:21"},"returnParameters":{"id":3703,"nodeType":"ParameterList","parameters":[],"src":"631:0:21"},"scope":3706,"src":"492:141:21","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":3707,"src":"243:392:21","usedErrors":[815,820,828,1213,1647,1940],"usedEvents":[734,741]}],"src":"32:604:21"},"id":21},"contracts/interfaces/IVideoPayment.sol":{"ast":{"absolutePath":"contracts/interfaces/IVideoPayment.sol","exportedSymbols":{"IVideoPayment":[4049],"VideoPaymentStorage":[4107]},"id":4050,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3708,"literals":["solidity","^","0.8",".19"],"nodeType":"PragmaDirective","src":"32:24:22"},{"absolutePath":"contracts/libraries/VideoPaymentStorage.sol","file":"../libraries/VideoPaymentStorage.sol","id":3709,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":4050,"sourceUnit":4108,"src":"58:46:22","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IVideoPayment","contractDependencies":[],"contractKind":"interface","documentation":{"id":3710,"nodeType":"StructuredDocumentation","src":"106:75:22","text":" @title IVideoPayment\n @dev Interface for VideoPayment contract"},"fullyImplemented":false,"id":4049,"linearizedBaseContracts":[4049],"name":"IVideoPayment","nameLocation":"192:13:22","nodeType":"ContractDefinition","nodes":[{"errorSelector":"30cd7471","id":3712,"name":"NotOwner","nameLocation":"239:8:22","nodeType":"ErrorDefinition","parameters":{"id":3711,"nodeType":"ParameterList","parameters":[],"src":"247:2:22"},"src":"233:17:22"},{"errorSelector":"7bfa4b9f","id":3714,"name":"NotAdmin","nameLocation":"261:8:22","nodeType":"ErrorDefinition","parameters":{"id":3713,"nodeType":"ParameterList","parameters":[],"src":"269:2:22"},"src":"255:17:22"},{"errorSelector":"ab35696f","id":3716,"name":"ContractPaused","nameLocation":"283:14:22","nodeType":"ErrorDefinition","parameters":{"id":3715,"nodeType":"ParameterList","parameters":[],"src":"297:2:22"},"src":"277:23:22"},{"errorSelector":"ab4142cf","id":3718,"name":"InvalidContent","nameLocation":"311:14:22","nodeType":"ErrorDefinition","parameters":{"id":3717,"nodeType":"ParameterList","parameters":[],"src":"325:2:22"},"src":"305:23:22"},{"errorSelector":"6a172882","id":3720,"name":"UnsupportedToken","nameLocation":"339:16:22","nodeType":"ErrorDefinition","parameters":{"id":3719,"nodeType":"ParameterList","parameters":[],"src":"355:2:22"},"src":"333:25:22"},{"errorSelector":"cd1c8867","id":3722,"name":"InsufficientPayment","nameLocation":"369:19:22","nodeType":"ErrorDefinition","parameters":{"id":3721,"nodeType":"ParameterList","parameters":[],"src":"388:2:22"},"src":"363:28:22"},{"errorSelector":"fcd7a1b5","id":3724,"name":"NoValidPermission","nameLocation":"402:17:22","nodeType":"ErrorDefinition","parameters":{"id":3723,"nodeType":"ParameterList","parameters":[],"src":"419:2:22"},"src":"396:26:22"},{"errorSelector":"a24a13a6","id":3726,"name":"ArrayLengthMismatch","nameLocation":"433:19:22","nodeType":"ErrorDefinition","parameters":{"id":3725,"nodeType":"ParameterList","parameters":[],"src":"452:2:22"},"src":"427:28:22"},{"errorSelector":"d92e233d","id":3728,"name":"ZeroAddress","nameLocation":"466:11:22","nodeType":"ErrorDefinition","parameters":{"id":3727,"nodeType":"ParameterList","parameters":[],"src":"477:2:22"},"src":"460:20:22"},{"errorSelector":"2c5211c6","id":3730,"name":"InvalidAmount","nameLocation":"491:13:22","nodeType":"ErrorDefinition","parameters":{"id":3729,"nodeType":"ParameterList","parameters":[],"src":"504:2:22"},"src":"485:22:22"},{"anonymous":false,"eventSelector":"180fe4b156a592a405cdd866f58883063db683348215e97cf864d6bf9679261c","id":3744,"name":"ContentPurchased","nameLocation":"552:16:22","nodeType":"EventDefinition","parameters":{"id":3743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3732,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"594:4:22","nodeType":"VariableDeclaration","scope":3744,"src":"578:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3731,"name":"address","nodeType":"ElementaryTypeName","src":"578:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3734,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"624:9:22","nodeType":"VariableDeclaration","scope":3744,"src":"608:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3733,"name":"uint256","nodeType":"ElementaryTypeName","src":"608:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3736,"indexed":false,"mutability":"mutable","name":"paymentToken","nameLocation":"651:12:22","nodeType":"VariableDeclaration","scope":3744,"src":"643:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3735,"name":"address","nodeType":"ElementaryTypeName","src":"643:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3738,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"681:6:22","nodeType":"VariableDeclaration","scope":3744,"src":"673:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3737,"name":"uint256","nodeType":"ElementaryTypeName","src":"673:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3740,"indexed":false,"mutability":"mutable","name":"viewCount","nameLocation":"705:9:22","nodeType":"VariableDeclaration","scope":3744,"src":"697:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3739,"name":"uint256","nodeType":"ElementaryTypeName","src":"697:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3742,"indexed":false,"mutability":"mutable","name":"validUntil","nameLocation":"732:10:22","nodeType":"VariableDeclaration","scope":3744,"src":"724:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3741,"name":"uint256","nodeType":"ElementaryTypeName","src":"724:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"568:180:22"},"src":"546:203:22"},{"anonymous":false,"eventSelector":"8c61c0751c0e925b40e7a528992e1413a937c058ac7eafd0c61f75abd3a8225d","id":3756,"name":"NativePurchased","nameLocation":"761:15:22","nodeType":"EventDefinition","parameters":{"id":3755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3746,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"802:4:22","nodeType":"VariableDeclaration","scope":3756,"src":"786:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3745,"name":"address","nodeType":"ElementaryTypeName","src":"786:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3748,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"832:9:22","nodeType":"VariableDeclaration","scope":3756,"src":"816:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3747,"name":"uint256","nodeType":"ElementaryTypeName","src":"816:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3750,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"859:6:22","nodeType":"VariableDeclaration","scope":3756,"src":"851:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3749,"name":"uint256","nodeType":"ElementaryTypeName","src":"851:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3752,"indexed":false,"mutability":"mutable","name":"viewCount","nameLocation":"883:9:22","nodeType":"VariableDeclaration","scope":3756,"src":"875:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3751,"name":"uint256","nodeType":"ElementaryTypeName","src":"875:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3754,"indexed":false,"mutability":"mutable","name":"validUntil","nameLocation":"910:10:22","nodeType":"VariableDeclaration","scope":3756,"src":"902:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3753,"name":"uint256","nodeType":"ElementaryTypeName","src":"902:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"776:150:22"},"src":"755:172:22"},{"anonymous":false,"eventSelector":"2be07a645f06bfa8b189b4f0aba9bf2109d098d03cbede0449641495bba5d53d","id":3767,"name":"BatchPurchased","nameLocation":"939:14:22","nodeType":"EventDefinition","parameters":{"id":3766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3758,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"979:4:22","nodeType":"VariableDeclaration","scope":3767,"src":"963:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3757,"name":"address","nodeType":"ElementaryTypeName","src":"963:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3761,"indexed":false,"mutability":"mutable","name":"contentIds","nameLocation":"1003:10:22","nodeType":"VariableDeclaration","scope":3767,"src":"993:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3759,"name":"uint256","nodeType":"ElementaryTypeName","src":"993:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3760,"nodeType":"ArrayTypeName","src":"993:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3763,"indexed":false,"mutability":"mutable","name":"paymentToken","nameLocation":"1031:12:22","nodeType":"VariableDeclaration","scope":3767,"src":"1023:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3762,"name":"address","nodeType":"ElementaryTypeName","src":"1023:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3765,"indexed":false,"mutability":"mutable","name":"totalAmount","nameLocation":"1061:11:22","nodeType":"VariableDeclaration","scope":3767,"src":"1053:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3764,"name":"uint256","nodeType":"ElementaryTypeName","src":"1053:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"953:125:22"},"src":"933:146:22"},{"anonymous":false,"eventSelector":"aec2d14270982470108e2c88fecca013dba6caf4edb3c8c7ac6d9db8b26cb89f","id":3776,"name":"BatchNativePurchased","nameLocation":"1091:20:22","nodeType":"EventDefinition","parameters":{"id":3775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3769,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"1137:4:22","nodeType":"VariableDeclaration","scope":3776,"src":"1121:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3768,"name":"address","nodeType":"ElementaryTypeName","src":"1121:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3772,"indexed":false,"mutability":"mutable","name":"contentIds","nameLocation":"1161:10:22","nodeType":"VariableDeclaration","scope":3776,"src":"1151:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3770,"name":"uint256","nodeType":"ElementaryTypeName","src":"1151:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3771,"nodeType":"ArrayTypeName","src":"1151:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3774,"indexed":false,"mutability":"mutable","name":"totalAmount","nameLocation":"1189:11:22","nodeType":"VariableDeclaration","scope":3776,"src":"1181:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3773,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1111:95:22"},"src":"1085:122:22"},{"anonymous":false,"eventSelector":"d0de3e759b6d8ae4ab8dfd56f0869b691034bf2f14b896155287e5cd61d66a70","id":3786,"name":"NFTPurchased","nameLocation":"1219:12:22","nodeType":"EventDefinition","parameters":{"id":3785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3778,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"1257:4:22","nodeType":"VariableDeclaration","scope":3786,"src":"1241:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3777,"name":"address","nodeType":"ElementaryTypeName","src":"1241:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3780,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"1287:9:22","nodeType":"VariableDeclaration","scope":3786,"src":"1271:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3779,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3782,"indexed":false,"mutability":"mutable","name":"nftContract","nameLocation":"1314:11:22","nodeType":"VariableDeclaration","scope":3786,"src":"1306:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3781,"name":"address","nodeType":"ElementaryTypeName","src":"1306:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3784,"indexed":false,"mutability":"mutable","name":"tokenId","nameLocation":"1343:7:22","nodeType":"VariableDeclaration","scope":3786,"src":"1335:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3783,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1231:125:22"},"src":"1213:144:22"},{"anonymous":false,"eventSelector":"2ccc6c74b339e9d58b89aa6bb58d0519712aeff106f7981d466f54572cb88b42","id":3794,"name":"ViewConsumed","nameLocation":"1404:12:22","nodeType":"EventDefinition","parameters":{"id":3793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3788,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"1442:4:22","nodeType":"VariableDeclaration","scope":3794,"src":"1426:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3787,"name":"address","nodeType":"ElementaryTypeName","src":"1426:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3790,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"1472:9:22","nodeType":"VariableDeclaration","scope":3794,"src":"1456:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3789,"name":"uint256","nodeType":"ElementaryTypeName","src":"1456:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3792,"indexed":false,"mutability":"mutable","name":"remainingViews","nameLocation":"1499:14:22","nodeType":"VariableDeclaration","scope":3794,"src":"1491:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3791,"name":"uint256","nodeType":"ElementaryTypeName","src":"1491:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1416:103:22"},"src":"1398:122:22"},{"anonymous":false,"eventSelector":"294e395c96ee31e4373f6b284b107e5341ffa80f2c53e582bc3cfb1f9efe500e","id":3800,"name":"PermissionExpired","nameLocation":"1532:17:22","nodeType":"EventDefinition","parameters":{"id":3799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3796,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"1566:4:22","nodeType":"VariableDeclaration","scope":3800,"src":"1550:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3795,"name":"address","nodeType":"ElementaryTypeName","src":"1550:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3798,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"1588:9:22","nodeType":"VariableDeclaration","scope":3800,"src":"1572:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3797,"name":"uint256","nodeType":"ElementaryTypeName","src":"1572:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1549:49:22"},"src":"1526:73:22"},{"anonymous":false,"eventSelector":"44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e339","id":3804,"name":"AdminAdded","nameLocation":"1646:10:22","nodeType":"EventDefinition","parameters":{"id":3803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3802,"indexed":true,"mutability":"mutable","name":"admin","nameLocation":"1673:5:22","nodeType":"VariableDeclaration","scope":3804,"src":"1657:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3801,"name":"address","nodeType":"ElementaryTypeName","src":"1657:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1656:23:22"},"src":"1640:40:22"},{"anonymous":false,"eventSelector":"a3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f","id":3808,"name":"AdminRemoved","nameLocation":"1691:12:22","nodeType":"EventDefinition","parameters":{"id":3807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3806,"indexed":true,"mutability":"mutable","name":"admin","nameLocation":"1720:5:22","nodeType":"VariableDeclaration","scope":3808,"src":"1704:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3805,"name":"address","nodeType":"ElementaryTypeName","src":"1704:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1703:23:22"},"src":"1685:42:22"},{"anonymous":false,"eventSelector":"a7c3f5f04f0c05ad82fcdf81039da5a01bf41ce2769b7b347afa43bb65e44266","id":3812,"name":"ContentConfigUpdated","nameLocation":"1738:20:22","nodeType":"EventDefinition","parameters":{"id":3811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3810,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"1775:9:22","nodeType":"VariableDeclaration","scope":3812,"src":"1759:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3809,"name":"uint256","nodeType":"ElementaryTypeName","src":"1759:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1758:27:22"},"src":"1732:54:22"},{"anonymous":false,"eventSelector":"376716bd86293ff8b34061b9af3cac5116f15e0f2cbf689d822b6d6d7b1eeca9","id":3820,"name":"TokenPriceUpdated","nameLocation":"1797:17:22","nodeType":"EventDefinition","parameters":{"id":3819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3814,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"1840:9:22","nodeType":"VariableDeclaration","scope":3820,"src":"1824:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3813,"name":"uint256","nodeType":"ElementaryTypeName","src":"1824:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3816,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"1875:5:22","nodeType":"VariableDeclaration","scope":3820,"src":"1859:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3815,"name":"address","nodeType":"ElementaryTypeName","src":"1859:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3818,"indexed":false,"mutability":"mutable","name":"price","nameLocation":"1898:5:22","nodeType":"VariableDeclaration","scope":3820,"src":"1890:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3817,"name":"uint256","nodeType":"ElementaryTypeName","src":"1890:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1814:95:22"},"src":"1791:119:22"},{"anonymous":false,"eventSelector":"40175eba104d8383c936ec96a9da297986b13a86e5b2a19296171b11533e59ce","id":3826,"name":"NativePriceUpdated","nameLocation":"1921:18:22","nodeType":"EventDefinition","parameters":{"id":3825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3822,"indexed":true,"mutability":"mutable","name":"contentId","nameLocation":"1956:9:22","nodeType":"VariableDeclaration","scope":3826,"src":"1940:25:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3821,"name":"uint256","nodeType":"ElementaryTypeName","src":"1940:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3824,"indexed":false,"mutability":"mutable","name":"price","nameLocation":"1975:5:22","nodeType":"VariableDeclaration","scope":3826,"src":"1967:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3823,"name":"uint256","nodeType":"ElementaryTypeName","src":"1967:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1939:42:22"},"src":"1915:67:22"},{"anonymous":false,"eventSelector":"d1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d7","id":3830,"name":"SupportedTokenAdded","nameLocation":"1993:19:22","nodeType":"EventDefinition","parameters":{"id":3829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3828,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"2029:5:22","nodeType":"VariableDeclaration","scope":3830,"src":"2013:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3827,"name":"address","nodeType":"ElementaryTypeName","src":"2013:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2012:23:22"},"src":"1987:49:22"},{"anonymous":false,"eventSelector":"bea12876694c4055c71f74308f752b9027cf3d554194000a366abddfc239a306","id":3834,"name":"SupportedTokenRemoved","nameLocation":"2047:21:22","nodeType":"EventDefinition","parameters":{"id":3833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3832,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"2085:5:22","nodeType":"VariableDeclaration","scope":3834,"src":"2069:21:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3831,"name":"address","nodeType":"ElementaryTypeName","src":"2069:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2068:23:22"},"src":"2041:51:22"},{"anonymous":false,"eventSelector":"9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e752","id":3836,"name":"Paused","nameLocation":"2103:6:22","nodeType":"EventDefinition","parameters":{"id":3835,"nodeType":"ParameterList","parameters":[],"src":"2109:2:22"},"src":"2097:15:22"},{"anonymous":false,"eventSelector":"a45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d16933","id":3838,"name":"Unpaused","nameLocation":"2123:8:22","nodeType":"EventDefinition","parameters":{"id":3837,"nodeType":"ParameterList","parameters":[],"src":"2131:2:22"},"src":"2117:17:22"},{"anonymous":false,"eventSelector":"bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","id":3842,"name":"Upgraded","nameLocation":"2145:8:22","nodeType":"EventDefinition","parameters":{"id":3841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3840,"indexed":true,"mutability":"mutable","name":"newImplementation","nameLocation":"2170:17:22","nodeType":"VariableDeclaration","scope":3842,"src":"2154:33:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3839,"name":"address","nodeType":"ElementaryTypeName","src":"2154:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2153:35:22"},"src":"2139:50:22"},{"functionSelector":"70480275","id":3847,"implemented":false,"kind":"function","modifiers":[],"name":"addAdmin","nameLocation":"2238:8:22","nodeType":"FunctionDefinition","parameters":{"id":3845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3844,"mutability":"mutable","name":"admin","nameLocation":"2255:5:22","nodeType":"VariableDeclaration","scope":3847,"src":"2247:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3843,"name":"address","nodeType":"ElementaryTypeName","src":"2247:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2246:15:22"},"returnParameters":{"id":3846,"nodeType":"ParameterList","parameters":[],"src":"2270:0:22"},"scope":4049,"src":"2229:42:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1785f53c","id":3852,"implemented":false,"kind":"function","modifiers":[],"name":"removeAdmin","nameLocation":"2285:11:22","nodeType":"FunctionDefinition","parameters":{"id":3850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3849,"mutability":"mutable","name":"admin","nameLocation":"2305:5:22","nodeType":"VariableDeclaration","scope":3852,"src":"2297:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3848,"name":"address","nodeType":"ElementaryTypeName","src":"2297:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2296:15:22"},"returnParameters":{"id":3851,"nodeType":"ParameterList","parameters":[],"src":"2320:0:22"},"scope":4049,"src":"2276:45:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b1b105fe","id":3865,"implemented":false,"kind":"function","modifiers":[],"name":"setContentConfig","nameLocation":"2372:16:22","nodeType":"FunctionDefinition","parameters":{"id":3863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3854,"mutability":"mutable","name":"contentId","nameLocation":"2406:9:22","nodeType":"VariableDeclaration","scope":3865,"src":"2398:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3853,"name":"uint256","nodeType":"ElementaryTypeName","src":"2398:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3856,"mutability":"mutable","name":"nativePrice","nameLocation":"2433:11:22","nodeType":"VariableDeclaration","scope":3865,"src":"2425:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3855,"name":"uint256","nodeType":"ElementaryTypeName","src":"2425:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3858,"mutability":"mutable","name":"defaultViewCount","nameLocation":"2462:16:22","nodeType":"VariableDeclaration","scope":3865,"src":"2454:24:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3857,"name":"uint256","nodeType":"ElementaryTypeName","src":"2454:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3860,"mutability":"mutable","name":"viewDuration","nameLocation":"2496:12:22","nodeType":"VariableDeclaration","scope":3865,"src":"2488:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3859,"name":"uint256","nodeType":"ElementaryTypeName","src":"2488:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3862,"mutability":"mutable","name":"isActive","nameLocation":"2523:8:22","nodeType":"VariableDeclaration","scope":3865,"src":"2518:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3861,"name":"bool","nodeType":"ElementaryTypeName","src":"2518:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2388:149:22"},"returnParameters":{"id":3864,"nodeType":"ParameterList","parameters":[],"src":"2546:0:22"},"scope":4049,"src":"2363:184:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"09b952be","id":3883,"implemented":false,"kind":"function","modifiers":[],"name":"batchSetContentConfig","nameLocation":"2561:21:22","nodeType":"FunctionDefinition","parameters":{"id":3881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3868,"mutability":"mutable","name":"contentIds","nameLocation":"2609:10:22","nodeType":"VariableDeclaration","scope":3883,"src":"2592:27:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3866,"name":"uint256","nodeType":"ElementaryTypeName","src":"2592:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3867,"nodeType":"ArrayTypeName","src":"2592:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3871,"mutability":"mutable","name":"nativePrices","nameLocation":"2646:12:22","nodeType":"VariableDeclaration","scope":3883,"src":"2629:29:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3869,"name":"uint256","nodeType":"ElementaryTypeName","src":"2629:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3870,"nodeType":"ArrayTypeName","src":"2629:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3874,"mutability":"mutable","name":"defaultViewCounts","nameLocation":"2685:17:22","nodeType":"VariableDeclaration","scope":3883,"src":"2668:34:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3872,"name":"uint256","nodeType":"ElementaryTypeName","src":"2668:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3873,"nodeType":"ArrayTypeName","src":"2668:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3877,"mutability":"mutable","name":"viewDurations","nameLocation":"2729:13:22","nodeType":"VariableDeclaration","scope":3883,"src":"2712:30:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3875,"name":"uint256","nodeType":"ElementaryTypeName","src":"2712:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3876,"nodeType":"ArrayTypeName","src":"2712:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3880,"mutability":"mutable","name":"isActiveArray","nameLocation":"2766:13:22","nodeType":"VariableDeclaration","scope":3883,"src":"2752:27:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":3878,"name":"bool","nodeType":"ElementaryTypeName","src":"2752:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3879,"nodeType":"ArrayTypeName","src":"2752:6:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"2582:203:22"},"returnParameters":{"id":3882,"nodeType":"ParameterList","parameters":[],"src":"2794:0:22"},"scope":4049,"src":"2552:243:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"40033b3d","id":3890,"implemented":false,"kind":"function","modifiers":[],"name":"isContentActive","nameLocation":"2809:15:22","nodeType":"FunctionDefinition","parameters":{"id":3886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3885,"mutability":"mutable","name":"contentId","nameLocation":"2833:9:22","nodeType":"VariableDeclaration","scope":3890,"src":"2825:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3884,"name":"uint256","nodeType":"ElementaryTypeName","src":"2825:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2824:19:22"},"returnParameters":{"id":3889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3888,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3890,"src":"2867:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3887,"name":"bool","nodeType":"ElementaryTypeName","src":"2867:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2866:6:22"},"scope":4049,"src":"2800:73:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"3428cebb","id":3899,"implemented":false,"kind":"function","modifiers":[],"name":"updateTokenPrice","nameLocation":"2922:16:22","nodeType":"FunctionDefinition","parameters":{"id":3897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3892,"mutability":"mutable","name":"contentId","nameLocation":"2956:9:22","nodeType":"VariableDeclaration","scope":3899,"src":"2948:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3891,"name":"uint256","nodeType":"ElementaryTypeName","src":"2948:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3894,"mutability":"mutable","name":"token","nameLocation":"2983:5:22","nodeType":"VariableDeclaration","scope":3899,"src":"2975:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3893,"name":"address","nodeType":"ElementaryTypeName","src":"2975:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3896,"mutability":"mutable","name":"price","nameLocation":"3006:5:22","nodeType":"VariableDeclaration","scope":3899,"src":"2998:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3895,"name":"uint256","nodeType":"ElementaryTypeName","src":"2998:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2938:79:22"},"returnParameters":{"id":3898,"nodeType":"ParameterList","parameters":[],"src":"3026:0:22"},"scope":4049,"src":"2913:114:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8f0ff11b","id":3910,"implemented":false,"kind":"function","modifiers":[],"name":"batchUpdateTokenPrice","nameLocation":"3041:21:22","nodeType":"FunctionDefinition","parameters":{"id":3908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3902,"mutability":"mutable","name":"contentIds","nameLocation":"3089:10:22","nodeType":"VariableDeclaration","scope":3910,"src":"3072:27:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3900,"name":"uint256","nodeType":"ElementaryTypeName","src":"3072:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3901,"nodeType":"ArrayTypeName","src":"3072:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3904,"mutability":"mutable","name":"token","nameLocation":"3117:5:22","nodeType":"VariableDeclaration","scope":3910,"src":"3109:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3903,"name":"address","nodeType":"ElementaryTypeName","src":"3109:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3907,"mutability":"mutable","name":"prices","nameLocation":"3149:6:22","nodeType":"VariableDeclaration","scope":3910,"src":"3132:23:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3905,"name":"uint256","nodeType":"ElementaryTypeName","src":"3132:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3906,"nodeType":"ArrayTypeName","src":"3132:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3062:99:22"},"returnParameters":{"id":3909,"nodeType":"ParameterList","parameters":[],"src":"3170:0:22"},"scope":4049,"src":"3032:139:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"773f2054","id":3917,"implemented":false,"kind":"function","modifiers":[],"name":"updateNativePrice","nameLocation":"3185:17:22","nodeType":"FunctionDefinition","parameters":{"id":3915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3912,"mutability":"mutable","name":"contentId","nameLocation":"3211:9:22","nodeType":"VariableDeclaration","scope":3917,"src":"3203:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3911,"name":"uint256","nodeType":"ElementaryTypeName","src":"3203:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3914,"mutability":"mutable","name":"price","nameLocation":"3230:5:22","nodeType":"VariableDeclaration","scope":3917,"src":"3222:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3913,"name":"uint256","nodeType":"ElementaryTypeName","src":"3222:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3202:34:22"},"returnParameters":{"id":3916,"nodeType":"ParameterList","parameters":[],"src":"3245:0:22"},"scope":4049,"src":"3176:70:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f1aa52f4","id":3926,"implemented":false,"kind":"function","modifiers":[],"name":"batchUpdateNativePrice","nameLocation":"3260:22:22","nodeType":"FunctionDefinition","parameters":{"id":3924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3920,"mutability":"mutable","name":"contentIds","nameLocation":"3309:10:22","nodeType":"VariableDeclaration","scope":3926,"src":"3292:27:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3918,"name":"uint256","nodeType":"ElementaryTypeName","src":"3292:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3919,"nodeType":"ArrayTypeName","src":"3292:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3923,"mutability":"mutable","name":"prices","nameLocation":"3346:6:22","nodeType":"VariableDeclaration","scope":3926,"src":"3329:23:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3921,"name":"uint256","nodeType":"ElementaryTypeName","src":"3329:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3922,"nodeType":"ArrayTypeName","src":"3329:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3282:76:22"},"returnParameters":{"id":3925,"nodeType":"ParameterList","parameters":[],"src":"3367:0:22"},"scope":4049,"src":"3251:117:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6d69fcaf","id":3931,"implemented":false,"kind":"function","modifiers":[],"name":"addSupportedToken","nameLocation":"3425:17:22","nodeType":"FunctionDefinition","parameters":{"id":3929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3928,"mutability":"mutable","name":"token","nameLocation":"3451:5:22","nodeType":"VariableDeclaration","scope":3931,"src":"3443:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3927,"name":"address","nodeType":"ElementaryTypeName","src":"3443:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3442:15:22"},"returnParameters":{"id":3930,"nodeType":"ParameterList","parameters":[],"src":"3466:0:22"},"scope":4049,"src":"3416:51:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"76319190","id":3936,"implemented":false,"kind":"function","modifiers":[],"name":"removeSupportedToken","nameLocation":"3481:20:22","nodeType":"FunctionDefinition","parameters":{"id":3934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3933,"mutability":"mutable","name":"token","nameLocation":"3510:5:22","nodeType":"VariableDeclaration","scope":3936,"src":"3502:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3932,"name":"address","nodeType":"ElementaryTypeName","src":"3502:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3501:15:22"},"returnParameters":{"id":3935,"nodeType":"ParameterList","parameters":[],"src":"3525:0:22"},"scope":4049,"src":"3472:54:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"240028e8","id":3943,"implemented":false,"kind":"function","modifiers":[],"name":"isSupportedToken","nameLocation":"3540:16:22","nodeType":"FunctionDefinition","parameters":{"id":3939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3938,"mutability":"mutable","name":"token","nameLocation":"3565:5:22","nodeType":"VariableDeclaration","scope":3943,"src":"3557:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3937,"name":"address","nodeType":"ElementaryTypeName","src":"3557:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3556:15:22"},"returnParameters":{"id":3942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3941,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3943,"src":"3595:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3940,"name":"bool","nodeType":"ElementaryTypeName","src":"3595:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3594:6:22"},"scope":4049,"src":"3531:70:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b6f1d140","id":3952,"implemented":false,"kind":"function","modifiers":[],"name":"purchaseContent","nameLocation":"3642:15:22","nodeType":"FunctionDefinition","parameters":{"id":3950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3945,"mutability":"mutable","name":"contentId","nameLocation":"3675:9:22","nodeType":"VariableDeclaration","scope":3952,"src":"3667:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3944,"name":"uint256","nodeType":"ElementaryTypeName","src":"3667:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3947,"mutability":"mutable","name":"paymentToken","nameLocation":"3702:12:22","nodeType":"VariableDeclaration","scope":3952,"src":"3694:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3946,"name":"address","nodeType":"ElementaryTypeName","src":"3694:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3949,"mutability":"mutable","name":"amount","nameLocation":"3732:6:22","nodeType":"VariableDeclaration","scope":3952,"src":"3724:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3948,"name":"uint256","nodeType":"ElementaryTypeName","src":"3724:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3657:87:22"},"returnParameters":{"id":3951,"nodeType":"ParameterList","parameters":[],"src":"3753:0:22"},"scope":4049,"src":"3633:121:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c3c12e69","id":3957,"implemented":false,"kind":"function","modifiers":[],"name":"purchaseWithNative","nameLocation":"3768:18:22","nodeType":"FunctionDefinition","parameters":{"id":3955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3954,"mutability":"mutable","name":"contentId","nameLocation":"3795:9:22","nodeType":"VariableDeclaration","scope":3957,"src":"3787:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3953,"name":"uint256","nodeType":"ElementaryTypeName","src":"3787:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3786:19:22"},"returnParameters":{"id":3956,"nodeType":"ParameterList","parameters":[],"src":"3822:0:22"},"scope":4049,"src":"3759:64:22","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"99ea24fe","id":3967,"implemented":false,"kind":"function","modifiers":[],"name":"batchPurchase","nameLocation":"3837:13:22","nodeType":"FunctionDefinition","parameters":{"id":3965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3960,"mutability":"mutable","name":"contentIds","nameLocation":"3877:10:22","nodeType":"VariableDeclaration","scope":3967,"src":"3860:27:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3958,"name":"uint256","nodeType":"ElementaryTypeName","src":"3860:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3959,"nodeType":"ArrayTypeName","src":"3860:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3962,"mutability":"mutable","name":"paymentToken","nameLocation":"3905:12:22","nodeType":"VariableDeclaration","scope":3967,"src":"3897:20:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3961,"name":"address","nodeType":"ElementaryTypeName","src":"3897:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3964,"mutability":"mutable","name":"totalAmount","nameLocation":"3935:11:22","nodeType":"VariableDeclaration","scope":3967,"src":"3927:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3963,"name":"uint256","nodeType":"ElementaryTypeName","src":"3927:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3850:102:22"},"returnParameters":{"id":3966,"nodeType":"ParameterList","parameters":[],"src":"3961:0:22"},"scope":4049,"src":"3828:134:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"21f06438","id":3973,"implemented":false,"kind":"function","modifiers":[],"name":"batchPurchaseWithNative","nameLocation":"3976:23:22","nodeType":"FunctionDefinition","parameters":{"id":3971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3970,"mutability":"mutable","name":"contentIds","nameLocation":"4026:10:22","nodeType":"VariableDeclaration","scope":3973,"src":"4009:27:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3968,"name":"uint256","nodeType":"ElementaryTypeName","src":"4009:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3969,"nodeType":"ArrayTypeName","src":"4009:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3999:43:22"},"returnParameters":{"id":3972,"nodeType":"ParameterList","parameters":[],"src":"4059:0:22"},"scope":4049,"src":"3967:93:22","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"86778641","id":3982,"implemented":false,"kind":"function","modifiers":[],"name":"purchaseWithNFT","nameLocation":"4074:15:22","nodeType":"FunctionDefinition","parameters":{"id":3980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3975,"mutability":"mutable","name":"contentId","nameLocation":"4107:9:22","nodeType":"VariableDeclaration","scope":3982,"src":"4099:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3974,"name":"uint256","nodeType":"ElementaryTypeName","src":"4099:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3977,"mutability":"mutable","name":"nftContract","nameLocation":"4134:11:22","nodeType":"VariableDeclaration","scope":3982,"src":"4126:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3976,"name":"address","nodeType":"ElementaryTypeName","src":"4126:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3979,"mutability":"mutable","name":"tokenId","nameLocation":"4163:7:22","nodeType":"VariableDeclaration","scope":3982,"src":"4155:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3978,"name":"uint256","nodeType":"ElementaryTypeName","src":"4155:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4089:87:22"},"returnParameters":{"id":3981,"nodeType":"ParameterList","parameters":[],"src":"4185:0:22"},"scope":4049,"src":"4065:121:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"caae24b3","id":3991,"implemented":false,"kind":"function","modifiers":[],"name":"hasViewPermission","nameLocation":"4242:17:22","nodeType":"FunctionDefinition","parameters":{"id":3987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3984,"mutability":"mutable","name":"user","nameLocation":"4277:4:22","nodeType":"VariableDeclaration","scope":3991,"src":"4269:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3983,"name":"address","nodeType":"ElementaryTypeName","src":"4269:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3986,"mutability":"mutable","name":"contentId","nameLocation":"4299:9:22","nodeType":"VariableDeclaration","scope":3991,"src":"4291:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3985,"name":"uint256","nodeType":"ElementaryTypeName","src":"4291:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4259:55:22"},"returnParameters":{"id":3990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3989,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3991,"src":"4338:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3988,"name":"bool","nodeType":"ElementaryTypeName","src":"4338:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4337:6:22"},"scope":4049,"src":"4233:111:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b303f53f","id":4003,"implemented":false,"kind":"function","modifiers":[],"name":"getUserPermissions","nameLocation":"4358:18:22","nodeType":"FunctionDefinition","parameters":{"id":3997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3993,"mutability":"mutable","name":"user","nameLocation":"4394:4:22","nodeType":"VariableDeclaration","scope":4003,"src":"4386:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3992,"name":"address","nodeType":"ElementaryTypeName","src":"4386:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3996,"mutability":"mutable","name":"contentIds","nameLocation":"4425:10:22","nodeType":"VariableDeclaration","scope":4003,"src":"4408:27:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3994,"name":"uint256","nodeType":"ElementaryTypeName","src":"4408:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3995,"nodeType":"ArrayTypeName","src":"4408:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4376:65:22"},"returnParameters":{"id":4002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4001,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4003,"src":"4465:43:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"},"typeName":{"baseType":{"id":3999,"nodeType":"UserDefinedTypeName","pathNode":{"id":3998,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["4465:19:22","4485:14:22"],"nodeType":"IdentifierPath","referencedDeclaration":4075,"src":"4465:34:22"},"referencedDeclaration":4075,"src":"4465:34:22","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"id":4000,"nodeType":"ArrayTypeName","src":"4465:36:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ViewPermission_$4075_storage_$dyn_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission[]"}},"visibility":"internal"}],"src":"4464:45:22"},"scope":4049,"src":"4349:161:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8d13660e","id":4013,"implemented":false,"kind":"function","modifiers":[],"name":"getPermissionDetails","nameLocation":"4524:20:22","nodeType":"FunctionDefinition","parameters":{"id":4008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4005,"mutability":"mutable","name":"user","nameLocation":"4562:4:22","nodeType":"VariableDeclaration","scope":4013,"src":"4554:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4004,"name":"address","nodeType":"ElementaryTypeName","src":"4554:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4007,"mutability":"mutable","name":"contentId","nameLocation":"4584:9:22","nodeType":"VariableDeclaration","scope":4013,"src":"4576:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4006,"name":"uint256","nodeType":"ElementaryTypeName","src":"4576:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4544:55:22"},"returnParameters":{"id":4012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4011,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4013,"src":"4623:41:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_memory_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"},"typeName":{"id":4010,"nodeType":"UserDefinedTypeName","pathNode":{"id":4009,"name":"VideoPaymentStorage.ViewPermission","nameLocations":["4623:19:22","4643:14:22"],"nodeType":"IdentifierPath","referencedDeclaration":4075,"src":"4623:34:22"},"referencedDeclaration":4075,"src":"4623:34:22","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}},"visibility":"internal"}],"src":"4622:43:22"},"scope":4049,"src":"4515:151:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"05059571","id":4022,"implemented":false,"kind":"function","modifiers":[],"name":"consumeView","nameLocation":"4680:11:22","nodeType":"FunctionDefinition","parameters":{"id":4018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4015,"mutability":"mutable","name":"user","nameLocation":"4709:4:22","nodeType":"VariableDeclaration","scope":4022,"src":"4701:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4014,"name":"address","nodeType":"ElementaryTypeName","src":"4701:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4017,"mutability":"mutable","name":"contentId","nameLocation":"4731:9:22","nodeType":"VariableDeclaration","scope":4022,"src":"4723:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4016,"name":"uint256","nodeType":"ElementaryTypeName","src":"4723:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4691:55:22"},"returnParameters":{"id":4021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4020,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4022,"src":"4765:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4019,"name":"bool","nodeType":"ElementaryTypeName","src":"4765:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4764:6:22"},"scope":4049,"src":"4671:100:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"529e2b32","id":4034,"implemented":false,"kind":"function","modifiers":[],"name":"batchConsumeView","nameLocation":"4785:16:22","nodeType":"FunctionDefinition","parameters":{"id":4029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4025,"mutability":"mutable","name":"users","nameLocation":"4828:5:22","nodeType":"VariableDeclaration","scope":4034,"src":"4811:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4023,"name":"address","nodeType":"ElementaryTypeName","src":"4811:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4024,"nodeType":"ArrayTypeName","src":"4811:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":4028,"mutability":"mutable","name":"contentIds","nameLocation":"4860:10:22","nodeType":"VariableDeclaration","scope":4034,"src":"4843:27:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":4026,"name":"uint256","nodeType":"ElementaryTypeName","src":"4843:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4027,"nodeType":"ArrayTypeName","src":"4843:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4801:75:22"},"returnParameters":{"id":4033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4034,"src":"4895:13:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":4030,"name":"bool","nodeType":"ElementaryTypeName","src":"4895:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4031,"nodeType":"ArrayTypeName","src":"4895:6:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"4894:15:22"},"scope":4049,"src":"4776:134:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8456cb59","id":4037,"implemented":false,"kind":"function","modifiers":[],"name":"pause","nameLocation":"4960:5:22","nodeType":"FunctionDefinition","parameters":{"id":4035,"nodeType":"ParameterList","parameters":[],"src":"4965:2:22"},"returnParameters":{"id":4036,"nodeType":"ParameterList","parameters":[],"src":"4976:0:22"},"scope":4049,"src":"4951:26:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3f4ba83a","id":4040,"implemented":false,"kind":"function","modifiers":[],"name":"unpause","nameLocation":"4991:7:22","nodeType":"FunctionDefinition","parameters":{"id":4038,"nodeType":"ParameterList","parameters":[],"src":"4998:2:22"},"returnParameters":{"id":4039,"nodeType":"ParameterList","parameters":[],"src":"5009:0:22"},"scope":4049,"src":"4982:28:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"54fd4d50","id":4045,"implemented":false,"kind":"function","modifiers":[],"name":"version","nameLocation":"5050:7:22","nodeType":"FunctionDefinition","parameters":{"id":4041,"nodeType":"ParameterList","parameters":[],"src":"5057:2:22"},"returnParameters":{"id":4044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4043,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4045,"src":"5083:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4042,"name":"uint256","nodeType":"ElementaryTypeName","src":"5083:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5082:9:22"},"scope":4049,"src":"5041:51:22","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8fd3ab80","id":4048,"implemented":false,"kind":"function","modifiers":[],"name":"migrate","nameLocation":"5106:7:22","nodeType":"FunctionDefinition","parameters":{"id":4046,"nodeType":"ParameterList","parameters":[],"src":"5113:2:22"},"returnParameters":{"id":4047,"nodeType":"ParameterList","parameters":[],"src":"5124:0:22"},"scope":4049,"src":"5097:28:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4050,"src":"182:4945:22","usedErrors":[3712,3714,3716,3718,3720,3722,3724,3726,3728,3730],"usedEvents":[3744,3756,3767,3776,3786,3794,3800,3804,3808,3812,3820,3826,3830,3834,3836,3838,3842]}],"src":"32:5096:22"},"id":22},"contracts/libraries/VideoPaymentStorage.sol":{"ast":{"absolutePath":"contracts/libraries/VideoPaymentStorage.sol","exportedSymbols":{"VideoPaymentStorage":[4107]},"id":4108,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":4051,"literals":["solidity","^","0.8",".19"],"nodeType":"PragmaDirective","src":"32:24:23"},{"abstract":false,"baseContracts":[],"canonicalName":"VideoPaymentStorage","contractDependencies":[],"contractKind":"library","documentation":{"id":4052,"nodeType":"StructuredDocumentation","src":"58:118:23","text":" @title VideoPaymentStorage\n @dev Storage layout for VideoPayment contract to ensure upgrade compatibility"},"fullyImplemented":true,"id":4107,"linearizedBaseContracts":[4107],"name":"VideoPaymentStorage","nameLocation":"185:19:23","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4055,"mutability":"constant","name":"STORAGE_VERSION","nameLocation":"284:15:23","nodeType":"VariableDeclaration","scope":4107,"src":"267:36:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4053,"name":"uint256","nodeType":"ElementaryTypeName","src":"267:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":4054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"302:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"canonicalName":"VideoPaymentStorage.ContentConfig","id":4068,"members":[{"constant":false,"id":4059,"mutability":"mutable","name":"tokenPrices","nameLocation":"369:11:23","nodeType":"VariableDeclaration","scope":4068,"src":"341:39:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":4058,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4056,"name":"address","nodeType":"ElementaryTypeName","src":"349:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"341:27:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4057,"name":"uint256","nodeType":"ElementaryTypeName","src":"360:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":4061,"mutability":"mutable","name":"nativePrice","nameLocation":"420:11:23","nodeType":"VariableDeclaration","scope":4068,"src":"412:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4060,"name":"uint256","nodeType":"ElementaryTypeName","src":"412:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4063,"mutability":"mutable","name":"defaultViewCount","nameLocation":"470:16:23","nodeType":"VariableDeclaration","scope":4068,"src":"462:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4062,"name":"uint256","nodeType":"ElementaryTypeName","src":"462:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4065,"mutability":"mutable","name":"viewDuration","nameLocation":"541:12:23","nodeType":"VariableDeclaration","scope":4068,"src":"533:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4064,"name":"uint256","nodeType":"ElementaryTypeName","src":"533:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4067,"mutability":"mutable","name":"isActive","nameLocation":"605:8:23","nodeType":"VariableDeclaration","scope":4068,"src":"600:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4066,"name":"bool","nodeType":"ElementaryTypeName","src":"600:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ContentConfig","nameLocation":"317:13:23","nodeType":"StructDefinition","scope":4107,"src":"310:344:23","visibility":"public"},{"canonicalName":"VideoPaymentStorage.ViewPermission","id":4075,"members":[{"constant":false,"id":4070,"mutability":"mutable","name":"purchaseTime","nameLocation":"700:12:23","nodeType":"VariableDeclaration","scope":4075,"src":"692:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4069,"name":"uint256","nodeType":"ElementaryTypeName","src":"692:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4072,"mutability":"mutable","name":"remainingViews","nameLocation":"752:14:23","nodeType":"VariableDeclaration","scope":4075,"src":"744:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4071,"name":"uint256","nodeType":"ElementaryTypeName","src":"744:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4074,"mutability":"mutable","name":"isValid","nameLocation":"805:7:23","nodeType":"VariableDeclaration","scope":4075,"src":"800:12:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4073,"name":"bool","nodeType":"ElementaryTypeName","src":"800:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ViewPermission","nameLocation":"667:14:23","nodeType":"StructDefinition","scope":4107,"src":"660:190:23","visibility":"public"},{"canonicalName":"VideoPaymentStorage.VideoPaymentStorageStruct","id":4106,"members":[{"constant":false,"id":4077,"mutability":"mutable","name":"owner","nameLocation":"945:5:23","nodeType":"VariableDeclaration","scope":4106,"src":"937:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4076,"name":"address","nodeType":"ElementaryTypeName","src":"937:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4081,"mutability":"mutable","name":"isAdmin","nameLocation":"985:7:23","nodeType":"VariableDeclaration","scope":4106,"src":"960:32:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":4080,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4078,"name":"address","nodeType":"ElementaryTypeName","src":"968:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"960:24:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4079,"name":"bool","nodeType":"ElementaryTypeName","src":"979:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":4086,"mutability":"mutable","name":"contentConfigs","nameLocation":"1066:14:23","nodeType":"VariableDeclaration","scope":4106,"src":"1032:48:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig)"},"typeName":{"id":4085,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4082,"name":"uint256","nodeType":"ElementaryTypeName","src":"1040:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1032:33:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ContentConfig_$4068_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4084,"nodeType":"UserDefinedTypeName","pathNode":{"id":4083,"name":"ContentConfig","nameLocations":["1051:13:23"],"nodeType":"IdentifierPath","referencedDeclaration":4068,"src":"1051:13:23"},"referencedDeclaration":4068,"src":"1051:13:23","typeDescriptions":{"typeIdentifier":"t_struct$_ContentConfig_$4068_storage_ptr","typeString":"struct VideoPaymentStorage.ContentConfig"}}},"visibility":"internal"},{"constant":false,"id":4093,"mutability":"mutable","name":"userPermissions","nameLocation":"1173:15:23","nodeType":"VariableDeclaration","scope":4106,"src":"1118:70:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission))"},"typeName":{"id":4092,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4087,"name":"address","nodeType":"ElementaryTypeName","src":"1126:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1118:54:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4091,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4088,"name":"uint256","nodeType":"ElementaryTypeName","src":"1145:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1137:34:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ViewPermission_$4075_storage_$","typeString":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4090,"nodeType":"UserDefinedTypeName","pathNode":{"id":4089,"name":"ViewPermission","nameLocations":["1156:14:23"],"nodeType":"IdentifierPath","referencedDeclaration":4075,"src":"1156:14:23"},"referencedDeclaration":4075,"src":"1156:14:23","typeDescriptions":{"typeIdentifier":"t_struct$_ViewPermission_$4075_storage_ptr","typeString":"struct VideoPaymentStorage.ViewPermission"}}}},"visibility":"internal"},{"constant":false,"id":4097,"mutability":"mutable","name":"supportedTokens","nameLocation":"1259:15:23","nodeType":"VariableDeclaration","scope":4106,"src":"1234:40:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":4096,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":4094,"name":"address","nodeType":"ElementaryTypeName","src":"1242:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1234:24:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":4095,"name":"bool","nodeType":"ElementaryTypeName","src":"1253:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":4099,"mutability":"mutable","name":"paused","nameLocation":"1316:6:23","nodeType":"VariableDeclaration","scope":4106,"src":"1311:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4098,"name":"bool","nodeType":"ElementaryTypeName","src":"1311:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4101,"mutability":"mutable","name":"version","nameLocation":"1368:7:23","nodeType":"VariableDeclaration","scope":4106,"src":"1360:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4100,"name":"uint256","nodeType":"ElementaryTypeName","src":"1360:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4105,"mutability":"mutable","name":"__gap","nameLocation":"1451:5:23","nodeType":"VariableDeclaration","scope":4106,"src":"1439:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"},"typeName":{"baseType":{"id":4102,"name":"uint256","nodeType":"ElementaryTypeName","src":"1439:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4104,"length":{"hexValue":"3530","id":4103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1447:2:23","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"nodeType":"ArrayTypeName","src":"1439:11:23","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$50_storage_ptr","typeString":"uint256[50]"}},"visibility":"internal"}],"name":"VideoPaymentStorageStruct","nameLocation":"863:25:23","nodeType":"StructDefinition","scope":4107,"src":"856:607:23","visibility":"public"}],"scope":4108,"src":"177:1288:23","usedErrors":[],"usedEvents":[]}],"src":"32:1434:23"},"id":23}},"contracts":{"@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.28+commit.7893614a\"},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.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 reinitialization) 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 Pointer to storage slot. Allows integrators to override it with a custom storage location.\\n     *\\n     * NOTE: Consider following the ERC-7201 formula to derive storage locations.\\n     */\\n    function _initializableStorageSlot() internal pure virtual returns (bytes32) {\\n        return INITIALIZABLE_STORAGE;\\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        bytes32 slot = _initializableStorageSlot();\\n        assembly {\\n            $.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"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":"FailedCall","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."}],"FailedCall()":[{"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 ERC-1822 {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.28+commit.7893614a\"},\"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\":\"FailedCall\",\"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.\"}],\"FailedCall()\":[{\"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 ERC-1822 {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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.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 reinitialization) 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 Pointer to storage slot. Allows integrators to override it with a custom storage location.\\n     *\\n     * NOTE: Consider following the ERC-7201 formula to derive storage locations.\\n     */\\n    function _initializableStorageSlot() internal pure virtual returns (bytes32) {\\n        return INITIALIZABLE_STORAGE;\\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        bytes32 slot = _initializableStorageSlot();\\n        assembly {\\n            $.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.22;\\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 ERC-1967) 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 ERC-1167 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 ERC-1822 {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 ERC-1967 compliant implementation pointing to self.\\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 ERC-1967.\\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\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1822: 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\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This library provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\\n */\\nlibrary ERC1967Utils {\\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"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.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"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 EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. 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.28+commit.7893614a\"},\"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 EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. 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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.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 reinitialization) 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 Pointer to storage slot. Allows integrators to override it with a custom storage location.\\n     *\\n     * NOTE: Consider following the ERC-7201 formula to derive storage locations.\\n     */\\n    function _initializableStorageSlot() internal pure virtual returns (bytes32) {\\n        return INITIALIZABLE_STORAGE;\\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        bytes32 slot = _initializableStorageSlot();\\n        assembly {\\n            $.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 EIP-1153 (transient storage) is available on the chain you're deploying at,\\n * consider using {ReentrancyGuardTransient} instead.\\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\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/access/Ownable.sol":{"Ownable":{"abi":[{"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":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":{"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."}]},"kind":"dev","methods":{"constructor":{"details":"Initializes the contract setting the address provided by the deployer as the initial owner."},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. 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.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":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\":{\"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.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the address provided by the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. 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/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.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 {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * 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 Ownable is Context {\\n    address private _owner;\\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    constructor(address initialOwner) {\\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        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        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":587,"contract":"@openzeppelin/contracts/access/Ownable.sol:Ownable","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/interfaces/IERC1967.sol":{"IERC1967":{"abi":[{"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":"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.","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":{},"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.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\",\"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\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":\"IERC1967\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"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":"ERC-1822: 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.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-1822: 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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1822: 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\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"ERC1967Proxy":{"abi":[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"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":"FailedCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"}],"devdoc":{"details":"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.","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."}],"FailedCall()":[{"details":"A call to an address target failed. The target may have reverted."}]},"events":{"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_782":{"entryPoint":null,"id":782,"parameterSlots":2,"returnSlots":0},"@_checkNonPayable_1088":{"entryPoint":389,"id":1088,"parameterSlots":0,"returnSlots":0},"@_revert_1896":{"entryPoint":517,"id":1896,"parameterSlots":1,"returnSlots":0},"@_setImplementation_868":{"entryPoint":146,"id":868,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_1814":{"entryPoint":270,"id":1814,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_1984":{"entryPoint":null,"id":1984,"parameterSlots":1,"returnSlots":1},"@upgradeToAndCall_904":{"entryPoint":51,"id":904,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_1854":{"entryPoint":422,"id":1854,"parameterSlots":3,"returnSlots":1},"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":616,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":828,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":580,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":558,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:1985:24","nodeType":"YulBlock","src":"0:1985:24","statements":[{"nativeSrc":"6:3:24","nodeType":"YulBlock","src":"6:3:24","statements":[]},{"body":{"nativeSrc":"46:95:24","nodeType":"YulBlock","src":"46:95:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"63:1:24","nodeType":"YulLiteral","src":"63:1:24","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"70:3:24","nodeType":"YulLiteral","src":"70:3:24","type":"","value":"224"},{"kind":"number","nativeSrc":"75:10:24","nodeType":"YulLiteral","src":"75:10:24","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"66:3:24","nodeType":"YulIdentifier","src":"66:3:24"},"nativeSrc":"66:20:24","nodeType":"YulFunctionCall","src":"66:20:24"}],"functionName":{"name":"mstore","nativeSrc":"56:6:24","nodeType":"YulIdentifier","src":"56:6:24"},"nativeSrc":"56:31:24","nodeType":"YulFunctionCall","src":"56:31:24"},"nativeSrc":"56:31:24","nodeType":"YulExpressionStatement","src":"56:31:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"103:1:24","nodeType":"YulLiteral","src":"103:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"106:4:24","nodeType":"YulLiteral","src":"106:4:24","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"96:6:24","nodeType":"YulIdentifier","src":"96:6:24"},"nativeSrc":"96:15:24","nodeType":"YulFunctionCall","src":"96:15:24"},"nativeSrc":"96:15:24","nodeType":"YulExpressionStatement","src":"96:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"127:1:24","nodeType":"YulLiteral","src":"127:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"130:4:24","nodeType":"YulLiteral","src":"130:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"120:6:24","nodeType":"YulIdentifier","src":"120:6:24"},"nativeSrc":"120:15:24","nodeType":"YulFunctionCall","src":"120:15:24"},"nativeSrc":"120:15:24","nodeType":"YulExpressionStatement","src":"120:15:24"}]},"name":"panic_error_0x41","nativeSrc":"14:127:24","nodeType":"YulFunctionDefinition","src":"14:127:24"},{"body":{"nativeSrc":"212:184:24","nodeType":"YulBlock","src":"212:184:24","statements":[{"nativeSrc":"222:10:24","nodeType":"YulVariableDeclaration","src":"222:10:24","value":{"kind":"number","nativeSrc":"231:1:24","nodeType":"YulLiteral","src":"231:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"226:1:24","nodeType":"YulTypedName","src":"226:1:24","type":""}]},{"body":{"nativeSrc":"291:63:24","nodeType":"YulBlock","src":"291:63:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"316:3:24","nodeType":"YulIdentifier","src":"316:3:24"},{"name":"i","nativeSrc":"321:1:24","nodeType":"YulIdentifier","src":"321:1:24"}],"functionName":{"name":"add","nativeSrc":"312:3:24","nodeType":"YulIdentifier","src":"312:3:24"},"nativeSrc":"312:11:24","nodeType":"YulFunctionCall","src":"312:11:24"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"335:3:24","nodeType":"YulIdentifier","src":"335:3:24"},{"name":"i","nativeSrc":"340:1:24","nodeType":"YulIdentifier","src":"340:1:24"}],"functionName":{"name":"add","nativeSrc":"331:3:24","nodeType":"YulIdentifier","src":"331:3:24"},"nativeSrc":"331:11:24","nodeType":"YulFunctionCall","src":"331:11:24"}],"functionName":{"name":"mload","nativeSrc":"325:5:24","nodeType":"YulIdentifier","src":"325:5:24"},"nativeSrc":"325:18:24","nodeType":"YulFunctionCall","src":"325:18:24"}],"functionName":{"name":"mstore","nativeSrc":"305:6:24","nodeType":"YulIdentifier","src":"305:6:24"},"nativeSrc":"305:39:24","nodeType":"YulFunctionCall","src":"305:39:24"},"nativeSrc":"305:39:24","nodeType":"YulExpressionStatement","src":"305:39:24"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"252:1:24","nodeType":"YulIdentifier","src":"252:1:24"},{"name":"length","nativeSrc":"255:6:24","nodeType":"YulIdentifier","src":"255:6:24"}],"functionName":{"name":"lt","nativeSrc":"249:2:24","nodeType":"YulIdentifier","src":"249:2:24"},"nativeSrc":"249:13:24","nodeType":"YulFunctionCall","src":"249:13:24"},"nativeSrc":"241:113:24","nodeType":"YulForLoop","post":{"nativeSrc":"263:19:24","nodeType":"YulBlock","src":"263:19:24","statements":[{"nativeSrc":"265:15:24","nodeType":"YulAssignment","src":"265:15:24","value":{"arguments":[{"name":"i","nativeSrc":"274:1:24","nodeType":"YulIdentifier","src":"274:1:24"},{"kind":"number","nativeSrc":"277:2:24","nodeType":"YulLiteral","src":"277:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"270:3:24","nodeType":"YulIdentifier","src":"270:3:24"},"nativeSrc":"270:10:24","nodeType":"YulFunctionCall","src":"270:10:24"},"variableNames":[{"name":"i","nativeSrc":"265:1:24","nodeType":"YulIdentifier","src":"265:1:24"}]}]},"pre":{"nativeSrc":"245:3:24","nodeType":"YulBlock","src":"245:3:24","statements":[]},"src":"241:113:24"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"374:3:24","nodeType":"YulIdentifier","src":"374:3:24"},{"name":"length","nativeSrc":"379:6:24","nodeType":"YulIdentifier","src":"379:6:24"}],"functionName":{"name":"add","nativeSrc":"370:3:24","nodeType":"YulIdentifier","src":"370:3:24"},"nativeSrc":"370:16:24","nodeType":"YulFunctionCall","src":"370:16:24"},{"kind":"number","nativeSrc":"388:1:24","nodeType":"YulLiteral","src":"388:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"363:6:24","nodeType":"YulIdentifier","src":"363:6:24"},"nativeSrc":"363:27:24","nodeType":"YulFunctionCall","src":"363:27:24"},"nativeSrc":"363:27:24","nodeType":"YulExpressionStatement","src":"363:27:24"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"146:250:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"190:3:24","nodeType":"YulTypedName","src":"190:3:24","type":""},{"name":"dst","nativeSrc":"195:3:24","nodeType":"YulTypedName","src":"195:3:24","type":""},{"name":"length","nativeSrc":"200:6:24","nodeType":"YulTypedName","src":"200:6:24","type":""}],"src":"146:250:24"},{"body":{"nativeSrc":"508:975:24","nodeType":"YulBlock","src":"508:975:24","statements":[{"body":{"nativeSrc":"554:16:24","nodeType":"YulBlock","src":"554:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"563:1:24","nodeType":"YulLiteral","src":"563:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"566:1:24","nodeType":"YulLiteral","src":"566:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"556:6:24","nodeType":"YulIdentifier","src":"556:6:24"},"nativeSrc":"556:12:24","nodeType":"YulFunctionCall","src":"556:12:24"},"nativeSrc":"556:12:24","nodeType":"YulExpressionStatement","src":"556:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"529:7:24","nodeType":"YulIdentifier","src":"529:7:24"},{"name":"headStart","nativeSrc":"538:9:24","nodeType":"YulIdentifier","src":"538:9:24"}],"functionName":{"name":"sub","nativeSrc":"525:3:24","nodeType":"YulIdentifier","src":"525:3:24"},"nativeSrc":"525:23:24","nodeType":"YulFunctionCall","src":"525:23:24"},{"kind":"number","nativeSrc":"550:2:24","nodeType":"YulLiteral","src":"550:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"521:3:24","nodeType":"YulIdentifier","src":"521:3:24"},"nativeSrc":"521:32:24","nodeType":"YulFunctionCall","src":"521:32:24"},"nativeSrc":"518:52:24","nodeType":"YulIf","src":"518:52:24"},{"nativeSrc":"579:29:24","nodeType":"YulVariableDeclaration","src":"579:29:24","value":{"arguments":[{"name":"headStart","nativeSrc":"598:9:24","nodeType":"YulIdentifier","src":"598:9:24"}],"functionName":{"name":"mload","nativeSrc":"592:5:24","nodeType":"YulIdentifier","src":"592:5:24"},"nativeSrc":"592:16:24","nodeType":"YulFunctionCall","src":"592:16:24"},"variables":[{"name":"value","nativeSrc":"583:5:24","nodeType":"YulTypedName","src":"583:5:24","type":""}]},{"body":{"nativeSrc":"671:16:24","nodeType":"YulBlock","src":"671:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"680:1:24","nodeType":"YulLiteral","src":"680:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"683:1:24","nodeType":"YulLiteral","src":"683:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"673:6:24","nodeType":"YulIdentifier","src":"673:6:24"},"nativeSrc":"673:12:24","nodeType":"YulFunctionCall","src":"673:12:24"},"nativeSrc":"673:12:24","nodeType":"YulExpressionStatement","src":"673:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"630:5:24","nodeType":"YulIdentifier","src":"630:5:24"},{"arguments":[{"name":"value","nativeSrc":"641:5:24","nodeType":"YulIdentifier","src":"641:5:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"656:3:24","nodeType":"YulLiteral","src":"656:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"661:1:24","nodeType":"YulLiteral","src":"661:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"652:3:24","nodeType":"YulIdentifier","src":"652:3:24"},"nativeSrc":"652:11:24","nodeType":"YulFunctionCall","src":"652:11:24"},{"kind":"number","nativeSrc":"665:1:24","nodeType":"YulLiteral","src":"665:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"648:3:24","nodeType":"YulIdentifier","src":"648:3:24"},"nativeSrc":"648:19:24","nodeType":"YulFunctionCall","src":"648:19:24"}],"functionName":{"name":"and","nativeSrc":"637:3:24","nodeType":"YulIdentifier","src":"637:3:24"},"nativeSrc":"637:31:24","nodeType":"YulFunctionCall","src":"637:31:24"}],"functionName":{"name":"eq","nativeSrc":"627:2:24","nodeType":"YulIdentifier","src":"627:2:24"},"nativeSrc":"627:42:24","nodeType":"YulFunctionCall","src":"627:42:24"}],"functionName":{"name":"iszero","nativeSrc":"620:6:24","nodeType":"YulIdentifier","src":"620:6:24"},"nativeSrc":"620:50:24","nodeType":"YulFunctionCall","src":"620:50:24"},"nativeSrc":"617:70:24","nodeType":"YulIf","src":"617:70:24"},{"nativeSrc":"696:15:24","nodeType":"YulAssignment","src":"696:15:24","value":{"name":"value","nativeSrc":"706:5:24","nodeType":"YulIdentifier","src":"706:5:24"},"variableNames":[{"name":"value0","nativeSrc":"696:6:24","nodeType":"YulIdentifier","src":"696:6:24"}]},{"nativeSrc":"720:39:24","nodeType":"YulVariableDeclaration","src":"720:39:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"744:9:24","nodeType":"YulIdentifier","src":"744:9:24"},{"kind":"number","nativeSrc":"755:2:24","nodeType":"YulLiteral","src":"755:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"740:3:24","nodeType":"YulIdentifier","src":"740:3:24"},"nativeSrc":"740:18:24","nodeType":"YulFunctionCall","src":"740:18:24"}],"functionName":{"name":"mload","nativeSrc":"734:5:24","nodeType":"YulIdentifier","src":"734:5:24"},"nativeSrc":"734:25:24","nodeType":"YulFunctionCall","src":"734:25:24"},"variables":[{"name":"offset","nativeSrc":"724:6:24","nodeType":"YulTypedName","src":"724:6:24","type":""}]},{"body":{"nativeSrc":"802:16:24","nodeType":"YulBlock","src":"802:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"811:1:24","nodeType":"YulLiteral","src":"811:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"814:1:24","nodeType":"YulLiteral","src":"814:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"804:6:24","nodeType":"YulIdentifier","src":"804:6:24"},"nativeSrc":"804:12:24","nodeType":"YulFunctionCall","src":"804:12:24"},"nativeSrc":"804:12:24","nodeType":"YulExpressionStatement","src":"804:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"774:6:24","nodeType":"YulIdentifier","src":"774:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"790:2:24","nodeType":"YulLiteral","src":"790:2:24","type":"","value":"64"},{"kind":"number","nativeSrc":"794:1:24","nodeType":"YulLiteral","src":"794:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"786:3:24","nodeType":"YulIdentifier","src":"786:3:24"},"nativeSrc":"786:10:24","nodeType":"YulFunctionCall","src":"786:10:24"},{"kind":"number","nativeSrc":"798:1:24","nodeType":"YulLiteral","src":"798:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"782:3:24","nodeType":"YulIdentifier","src":"782:3:24"},"nativeSrc":"782:18:24","nodeType":"YulFunctionCall","src":"782:18:24"}],"functionName":{"name":"gt","nativeSrc":"771:2:24","nodeType":"YulIdentifier","src":"771:2:24"},"nativeSrc":"771:30:24","nodeType":"YulFunctionCall","src":"771:30:24"},"nativeSrc":"768:50:24","nodeType":"YulIf","src":"768:50:24"},{"nativeSrc":"827:32:24","nodeType":"YulVariableDeclaration","src":"827:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"841:9:24","nodeType":"YulIdentifier","src":"841:9:24"},{"name":"offset","nativeSrc":"852:6:24","nodeType":"YulIdentifier","src":"852:6:24"}],"functionName":{"name":"add","nativeSrc":"837:3:24","nodeType":"YulIdentifier","src":"837:3:24"},"nativeSrc":"837:22:24","nodeType":"YulFunctionCall","src":"837:22:24"},"variables":[{"name":"_1","nativeSrc":"831:2:24","nodeType":"YulTypedName","src":"831:2:24","type":""}]},{"body":{"nativeSrc":"907:16:24","nodeType":"YulBlock","src":"907:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"916:1:24","nodeType":"YulLiteral","src":"916:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"919:1:24","nodeType":"YulLiteral","src":"919:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"909:6:24","nodeType":"YulIdentifier","src":"909:6:24"},"nativeSrc":"909:12:24","nodeType":"YulFunctionCall","src":"909:12:24"},"nativeSrc":"909:12:24","nodeType":"YulExpressionStatement","src":"909:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"886:2:24","nodeType":"YulIdentifier","src":"886:2:24"},{"kind":"number","nativeSrc":"890:4:24","nodeType":"YulLiteral","src":"890:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"882:3:24","nodeType":"YulIdentifier","src":"882:3:24"},"nativeSrc":"882:13:24","nodeType":"YulFunctionCall","src":"882:13:24"},{"name":"dataEnd","nativeSrc":"897:7:24","nodeType":"YulIdentifier","src":"897:7:24"}],"functionName":{"name":"slt","nativeSrc":"878:3:24","nodeType":"YulIdentifier","src":"878:3:24"},"nativeSrc":"878:27:24","nodeType":"YulFunctionCall","src":"878:27:24"}],"functionName":{"name":"iszero","nativeSrc":"871:6:24","nodeType":"YulIdentifier","src":"871:6:24"},"nativeSrc":"871:35:24","nodeType":"YulFunctionCall","src":"871:35:24"},"nativeSrc":"868:55:24","nodeType":"YulIf","src":"868:55:24"},{"nativeSrc":"932:23:24","nodeType":"YulVariableDeclaration","src":"932:23:24","value":{"arguments":[{"name":"_1","nativeSrc":"952:2:24","nodeType":"YulIdentifier","src":"952:2:24"}],"functionName":{"name":"mload","nativeSrc":"946:5:24","nodeType":"YulIdentifier","src":"946:5:24"},"nativeSrc":"946:9:24","nodeType":"YulFunctionCall","src":"946:9:24"},"variables":[{"name":"length","nativeSrc":"936:6:24","nodeType":"YulTypedName","src":"936:6:24","type":""}]},{"body":{"nativeSrc":"998:22:24","nodeType":"YulBlock","src":"998:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1000:16:24","nodeType":"YulIdentifier","src":"1000:16:24"},"nativeSrc":"1000:18:24","nodeType":"YulFunctionCall","src":"1000:18:24"},"nativeSrc":"1000:18:24","nodeType":"YulExpressionStatement","src":"1000:18:24"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"970:6:24","nodeType":"YulIdentifier","src":"970:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"986:2:24","nodeType":"YulLiteral","src":"986:2:24","type":"","value":"64"},{"kind":"number","nativeSrc":"990:1:24","nodeType":"YulLiteral","src":"990:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"982:3:24","nodeType":"YulIdentifier","src":"982:3:24"},"nativeSrc":"982:10:24","nodeType":"YulFunctionCall","src":"982:10:24"},{"kind":"number","nativeSrc":"994:1:24","nodeType":"YulLiteral","src":"994:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"978:3:24","nodeType":"YulIdentifier","src":"978:3:24"},"nativeSrc":"978:18:24","nodeType":"YulFunctionCall","src":"978:18:24"}],"functionName":{"name":"gt","nativeSrc":"967:2:24","nodeType":"YulIdentifier","src":"967:2:24"},"nativeSrc":"967:30:24","nodeType":"YulFunctionCall","src":"967:30:24"},"nativeSrc":"964:56:24","nodeType":"YulIf","src":"964:56:24"},{"nativeSrc":"1029:23:24","nodeType":"YulVariableDeclaration","src":"1029:23:24","value":{"arguments":[{"kind":"number","nativeSrc":"1049:2:24","nodeType":"YulLiteral","src":"1049:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1043:5:24","nodeType":"YulIdentifier","src":"1043:5:24"},"nativeSrc":"1043:9:24","nodeType":"YulFunctionCall","src":"1043:9:24"},"variables":[{"name":"memPtr","nativeSrc":"1033:6:24","nodeType":"YulTypedName","src":"1033:6:24","type":""}]},{"nativeSrc":"1061:85:24","nodeType":"YulVariableDeclaration","src":"1061:85:24","value":{"arguments":[{"name":"memPtr","nativeSrc":"1083:6:24","nodeType":"YulIdentifier","src":"1083:6:24"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1107:6:24","nodeType":"YulIdentifier","src":"1107:6:24"},{"kind":"number","nativeSrc":"1115:4:24","nodeType":"YulLiteral","src":"1115:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1103:3:24","nodeType":"YulIdentifier","src":"1103:3:24"},"nativeSrc":"1103:17:24","nodeType":"YulFunctionCall","src":"1103:17:24"},{"arguments":[{"kind":"number","nativeSrc":"1126:2:24","nodeType":"YulLiteral","src":"1126:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1122:3:24","nodeType":"YulIdentifier","src":"1122:3:24"},"nativeSrc":"1122:7:24","nodeType":"YulFunctionCall","src":"1122:7:24"}],"functionName":{"name":"and","nativeSrc":"1099:3:24","nodeType":"YulIdentifier","src":"1099:3:24"},"nativeSrc":"1099:31:24","nodeType":"YulFunctionCall","src":"1099:31:24"},{"kind":"number","nativeSrc":"1132:2:24","nodeType":"YulLiteral","src":"1132:2:24","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"1095:3:24","nodeType":"YulIdentifier","src":"1095:3:24"},"nativeSrc":"1095:40:24","nodeType":"YulFunctionCall","src":"1095:40:24"},{"arguments":[{"kind":"number","nativeSrc":"1141:2:24","nodeType":"YulLiteral","src":"1141:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1137:3:24","nodeType":"YulIdentifier","src":"1137:3:24"},"nativeSrc":"1137:7:24","nodeType":"YulFunctionCall","src":"1137:7:24"}],"functionName":{"name":"and","nativeSrc":"1091:3:24","nodeType":"YulIdentifier","src":"1091:3:24"},"nativeSrc":"1091:54:24","nodeType":"YulFunctionCall","src":"1091:54:24"}],"functionName":{"name":"add","nativeSrc":"1079:3:24","nodeType":"YulIdentifier","src":"1079:3:24"},"nativeSrc":"1079:67:24","nodeType":"YulFunctionCall","src":"1079:67:24"},"variables":[{"name":"newFreePtr","nativeSrc":"1065:10:24","nodeType":"YulTypedName","src":"1065:10:24","type":""}]},{"body":{"nativeSrc":"1221:22:24","nodeType":"YulBlock","src":"1221:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1223:16:24","nodeType":"YulIdentifier","src":"1223:16:24"},"nativeSrc":"1223:18:24","nodeType":"YulFunctionCall","src":"1223:18:24"},"nativeSrc":"1223:18:24","nodeType":"YulExpressionStatement","src":"1223:18:24"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1164:10:24","nodeType":"YulIdentifier","src":"1164:10:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1184:2:24","nodeType":"YulLiteral","src":"1184:2:24","type":"","value":"64"},{"kind":"number","nativeSrc":"1188:1:24","nodeType":"YulLiteral","src":"1188:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1180:3:24","nodeType":"YulIdentifier","src":"1180:3:24"},"nativeSrc":"1180:10:24","nodeType":"YulFunctionCall","src":"1180:10:24"},{"kind":"number","nativeSrc":"1192:1:24","nodeType":"YulLiteral","src":"1192:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1176:3:24","nodeType":"YulIdentifier","src":"1176:3:24"},"nativeSrc":"1176:18:24","nodeType":"YulFunctionCall","src":"1176:18:24"}],"functionName":{"name":"gt","nativeSrc":"1161:2:24","nodeType":"YulIdentifier","src":"1161:2:24"},"nativeSrc":"1161:34:24","nodeType":"YulFunctionCall","src":"1161:34:24"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1200:10:24","nodeType":"YulIdentifier","src":"1200:10:24"},{"name":"memPtr","nativeSrc":"1212:6:24","nodeType":"YulIdentifier","src":"1212:6:24"}],"functionName":{"name":"lt","nativeSrc":"1197:2:24","nodeType":"YulIdentifier","src":"1197:2:24"},"nativeSrc":"1197:22:24","nodeType":"YulFunctionCall","src":"1197:22:24"}],"functionName":{"name":"or","nativeSrc":"1158:2:24","nodeType":"YulIdentifier","src":"1158:2:24"},"nativeSrc":"1158:62:24","nodeType":"YulFunctionCall","src":"1158:62:24"},"nativeSrc":"1155:88:24","nodeType":"YulIf","src":"1155:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1259:2:24","nodeType":"YulLiteral","src":"1259:2:24","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1263:10:24","nodeType":"YulIdentifier","src":"1263:10:24"}],"functionName":{"name":"mstore","nativeSrc":"1252:6:24","nodeType":"YulIdentifier","src":"1252:6:24"},"nativeSrc":"1252:22:24","nodeType":"YulFunctionCall","src":"1252:22:24"},"nativeSrc":"1252:22:24","nodeType":"YulExpressionStatement","src":"1252:22:24"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1290:6:24","nodeType":"YulIdentifier","src":"1290:6:24"},{"name":"length","nativeSrc":"1298:6:24","nodeType":"YulIdentifier","src":"1298:6:24"}],"functionName":{"name":"mstore","nativeSrc":"1283:6:24","nodeType":"YulIdentifier","src":"1283:6:24"},"nativeSrc":"1283:22:24","nodeType":"YulFunctionCall","src":"1283:22:24"},"nativeSrc":"1283:22:24","nodeType":"YulExpressionStatement","src":"1283:22:24"},{"body":{"nativeSrc":"1355:16:24","nodeType":"YulBlock","src":"1355:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1364:1:24","nodeType":"YulLiteral","src":"1364:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1367:1:24","nodeType":"YulLiteral","src":"1367:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1357:6:24","nodeType":"YulIdentifier","src":"1357:6:24"},"nativeSrc":"1357:12:24","nodeType":"YulFunctionCall","src":"1357:12:24"},"nativeSrc":"1357:12:24","nodeType":"YulExpressionStatement","src":"1357:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1328:2:24","nodeType":"YulIdentifier","src":"1328:2:24"},{"name":"length","nativeSrc":"1332:6:24","nodeType":"YulIdentifier","src":"1332:6:24"}],"functionName":{"name":"add","nativeSrc":"1324:3:24","nodeType":"YulIdentifier","src":"1324:3:24"},"nativeSrc":"1324:15:24","nodeType":"YulFunctionCall","src":"1324:15:24"},{"kind":"number","nativeSrc":"1341:2:24","nodeType":"YulLiteral","src":"1341:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1320:3:24","nodeType":"YulIdentifier","src":"1320:3:24"},"nativeSrc":"1320:24:24","nodeType":"YulFunctionCall","src":"1320:24:24"},{"name":"dataEnd","nativeSrc":"1346:7:24","nodeType":"YulIdentifier","src":"1346:7:24"}],"functionName":{"name":"gt","nativeSrc":"1317:2:24","nodeType":"YulIdentifier","src":"1317:2:24"},"nativeSrc":"1317:37:24","nodeType":"YulFunctionCall","src":"1317:37:24"},"nativeSrc":"1314:57:24","nodeType":"YulIf","src":"1314:57:24"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1419:2:24","nodeType":"YulIdentifier","src":"1419:2:24"},{"kind":"number","nativeSrc":"1423:2:24","nodeType":"YulLiteral","src":"1423:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1415:3:24","nodeType":"YulIdentifier","src":"1415:3:24"},"nativeSrc":"1415:11:24","nodeType":"YulFunctionCall","src":"1415:11:24"},{"arguments":[{"name":"memPtr","nativeSrc":"1432:6:24","nodeType":"YulIdentifier","src":"1432:6:24"},{"kind":"number","nativeSrc":"1440:2:24","nodeType":"YulLiteral","src":"1440:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1428:3:24","nodeType":"YulIdentifier","src":"1428:3:24"},"nativeSrc":"1428:15:24","nodeType":"YulFunctionCall","src":"1428:15:24"},{"name":"length","nativeSrc":"1445:6:24","nodeType":"YulIdentifier","src":"1445:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"1380:34:24","nodeType":"YulIdentifier","src":"1380:34:24"},"nativeSrc":"1380:72:24","nodeType":"YulFunctionCall","src":"1380:72:24"},"nativeSrc":"1380:72:24","nodeType":"YulExpressionStatement","src":"1380:72:24"},{"nativeSrc":"1461:16:24","nodeType":"YulAssignment","src":"1461:16:24","value":{"name":"memPtr","nativeSrc":"1471:6:24","nodeType":"YulIdentifier","src":"1471:6:24"},"variableNames":[{"name":"value1","nativeSrc":"1461:6:24","nodeType":"YulIdentifier","src":"1461:6:24"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory","nativeSrc":"401:1082:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"466:9:24","nodeType":"YulTypedName","src":"466:9:24","type":""},{"name":"dataEnd","nativeSrc":"477:7:24","nodeType":"YulTypedName","src":"477:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"489:6:24","nodeType":"YulTypedName","src":"489:6:24","type":""},{"name":"value1","nativeSrc":"497:6:24","nodeType":"YulTypedName","src":"497:6:24","type":""}],"src":"401:1082:24"},{"body":{"nativeSrc":"1589:102:24","nodeType":"YulBlock","src":"1589:102:24","statements":[{"nativeSrc":"1599:26:24","nodeType":"YulAssignment","src":"1599:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"1611:9:24","nodeType":"YulIdentifier","src":"1611:9:24"},{"kind":"number","nativeSrc":"1622:2:24","nodeType":"YulLiteral","src":"1622:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1607:3:24","nodeType":"YulIdentifier","src":"1607:3:24"},"nativeSrc":"1607:18:24","nodeType":"YulFunctionCall","src":"1607:18:24"},"variableNames":[{"name":"tail","nativeSrc":"1599:4:24","nodeType":"YulIdentifier","src":"1599:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1641:9:24","nodeType":"YulIdentifier","src":"1641:9:24"},{"arguments":[{"name":"value0","nativeSrc":"1656:6:24","nodeType":"YulIdentifier","src":"1656:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1672:3:24","nodeType":"YulLiteral","src":"1672:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"1677:1:24","nodeType":"YulLiteral","src":"1677:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1668:3:24","nodeType":"YulIdentifier","src":"1668:3:24"},"nativeSrc":"1668:11:24","nodeType":"YulFunctionCall","src":"1668:11:24"},{"kind":"number","nativeSrc":"1681:1:24","nodeType":"YulLiteral","src":"1681:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1664:3:24","nodeType":"YulIdentifier","src":"1664:3:24"},"nativeSrc":"1664:19:24","nodeType":"YulFunctionCall","src":"1664:19:24"}],"functionName":{"name":"and","nativeSrc":"1652:3:24","nodeType":"YulIdentifier","src":"1652:3:24"},"nativeSrc":"1652:32:24","nodeType":"YulFunctionCall","src":"1652:32:24"}],"functionName":{"name":"mstore","nativeSrc":"1634:6:24","nodeType":"YulIdentifier","src":"1634:6:24"},"nativeSrc":"1634:51:24","nodeType":"YulFunctionCall","src":"1634:51:24"},"nativeSrc":"1634:51:24","nodeType":"YulExpressionStatement","src":"1634:51:24"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1488:203:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1558:9:24","nodeType":"YulTypedName","src":"1558:9:24","type":""},{"name":"value0","nativeSrc":"1569:6:24","nodeType":"YulTypedName","src":"1569:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1580:4:24","nodeType":"YulTypedName","src":"1580:4:24","type":""}],"src":"1488:203:24"},{"body":{"nativeSrc":"1833:150:24","nodeType":"YulBlock","src":"1833:150:24","statements":[{"nativeSrc":"1843:27:24","nodeType":"YulVariableDeclaration","src":"1843:27:24","value":{"arguments":[{"name":"value0","nativeSrc":"1863:6:24","nodeType":"YulIdentifier","src":"1863:6:24"}],"functionName":{"name":"mload","nativeSrc":"1857:5:24","nodeType":"YulIdentifier","src":"1857:5:24"},"nativeSrc":"1857:13:24","nodeType":"YulFunctionCall","src":"1857:13:24"},"variables":[{"name":"length","nativeSrc":"1847:6:24","nodeType":"YulTypedName","src":"1847:6:24","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"1918:6:24","nodeType":"YulIdentifier","src":"1918:6:24"},{"kind":"number","nativeSrc":"1926:4:24","nodeType":"YulLiteral","src":"1926:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1914:3:24","nodeType":"YulIdentifier","src":"1914:3:24"},"nativeSrc":"1914:17:24","nodeType":"YulFunctionCall","src":"1914:17:24"},{"name":"pos","nativeSrc":"1933:3:24","nodeType":"YulIdentifier","src":"1933:3:24"},{"name":"length","nativeSrc":"1938:6:24","nodeType":"YulIdentifier","src":"1938:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"1879:34:24","nodeType":"YulIdentifier","src":"1879:34:24"},"nativeSrc":"1879:66:24","nodeType":"YulFunctionCall","src":"1879:66:24"},"nativeSrc":"1879:66:24","nodeType":"YulExpressionStatement","src":"1879:66:24"},{"nativeSrc":"1954:23:24","nodeType":"YulAssignment","src":"1954:23:24","value":{"arguments":[{"name":"pos","nativeSrc":"1965:3:24","nodeType":"YulIdentifier","src":"1965:3:24"},{"name":"length","nativeSrc":"1970:6:24","nodeType":"YulIdentifier","src":"1970:6:24"}],"functionName":{"name":"add","nativeSrc":"1961:3:24","nodeType":"YulIdentifier","src":"1961:3:24"},"nativeSrc":"1961:16:24","nodeType":"YulFunctionCall","src":"1961:16:24"},"variableNames":[{"name":"end","nativeSrc":"1954:3:24","nodeType":"YulIdentifier","src":"1954:3:24"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"1696:287:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1809:3:24","nodeType":"YulTypedName","src":"1809:3:24","type":""},{"name":"value0","nativeSrc":"1814:6:24","nodeType":"YulTypedName","src":"1814:6:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1825:3:24","nodeType":"YulTypedName","src":"1825:3:24","type":""}],"src":"1696:287:24"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        let offset := mload(add(headStart, 32))\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := mload(_1)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(_1, 32), add(memPtr, 32), length)\n        value1 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n}","id":24,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405260405161041038038061041083398101604081905261002291610268565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b919061033c565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b038111156102ae57600080fd5b8301601f810185136102bf57600080fd5b80516001600160401b038111156102d8576102d861022e565b604051601f8201601f19908116603f011681016001600160401b03811182821017156103065761030661022e565b60405281815282820160200187101561031e57600080fd5b61032f826020830160208601610244565b8093505050509250929050565b6000825161034e818460208701610244565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220ad37d0d7ed97bfdbc4123764ffea1418d0640cd5fba189b06ebdf2bfe956497b64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x268 JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x10E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x185 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xCD JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x12B SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x166 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x16B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x17C DUP6 DUP4 DUP4 PUSH2 0x1A6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1BB JUMPI PUSH2 0x1B6 DUP3 PUSH2 0x205 JUMP JUMPDEST PUSH2 0x1FE JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1D2 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1FB JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xC4 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x215 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x247 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2D8 JUMPI PUSH2 0x2D8 PUSH2 0x22E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x306 JUMPI PUSH2 0x306 PUSH2 0x22E JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x31E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x32F DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x244 JUMP JUMPDEST DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x244 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD CALLDATACOPY 0xD0 0xD7 0xED SWAP8 0xBF 0xDB 0xC4 SLT CALLDATACOPY PUSH5 0xFFEA1418D0 PUSH5 0xCD5FBA189 0xB0 PUSH15 0xBDF2BFE956497B64736F6C63430008 SHR STOP CALLER ","sourceMap":"600:1117:6:-:0;;;1081:133;;;;;;;;;;;;;;;;;;:::i;:::-;1155:52;1185:14;1201:5;1155:29;:52::i;:::-;1081:133;;600:1117;;2264:344:7;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:7;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;2264:344;;:::o;2454:148::-;2573:18;:16;:18::i;:::-;2264:344;;:::o;1671:281::-;1748:17;-1:-1:-1;;;;;1748:29:7;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:7;;-1:-1:-1;;;;;1652:32:24;;1805:47:7;;;1634:51:24;1607:18;;1805:47:7;;;;;;;;1744:119;811:66;1872:73;;-1:-1:-1;;;;;;1872:73:7;-1:-1:-1;;;;;1872:73:7;;;;;;;;;;1671:281::o;3916:253:15:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:15;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4023:67:15;;-1:-1:-1;4023:67:15;-1:-1:-1;4107:55:15;4134:6;4023:67;;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:15:o;6113:122:7:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:7;;;;;;;;;;;6159:70;6113:122::o;4437:582:15:-;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:15;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:15;;-1:-1:-1;;;;;1652:32:24;;4933:24:15;;;1634:51:24;1607:18;;4933:24:15;1488:203:24;4853:119:15;-1:-1:-1;4992:10:15;4605:408;4437:582;;;;;:::o;5559:487::-;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:15;;;;;;;;;;;14:127:24;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:24;370:16;;363:27;146:250::o;401:1082::-;489:6;497;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;592:16;;-1:-1:-1;;;;;637:31:24;;627:42;;617:70;;683:1;680;673:12;617:70;755:2;740:18;;734:25;706:5;;-1:-1:-1;;;;;;771:30:24;;768:50;;;814:1;811;804:12;768:50;837:22;;890:4;882:13;;878:27;-1:-1:-1;868:55:24;;919:1;916;909:12;868:55;946:9;;-1:-1:-1;;;;;967:30:24;;964:56;;;1000:18;;:::i;:::-;1049:2;1043:9;1141:2;1103:17;;-1:-1:-1;;1099:31:24;;;1132:2;1095:40;1091:54;1079:67;;-1:-1:-1;;;;;1161:34:24;;1197:22;;;1158:62;1155:88;;;1223:18;;:::i;:::-;1259:2;1252:22;1283;;;1324:15;;;1341:2;1320:24;1317:37;-1:-1:-1;1314:57:24;;;1367:1;1364;1357:12;1314:57;1380:72;1445:6;1440:2;1432:6;1428:15;1423:2;1419;1415:11;1380:72;:::i;:::-;1471:6;1461:16;;;;;401:1082;;;;;:::o;1696:287::-;1825:3;1863:6;1857:13;1879:66;1938:6;1933:3;1926:4;1918:6;1914:17;1879:66;:::i;:::-;1961:16;;;;;1696:287;-1:-1:-1;;1696:287:24:o;:::-;600:1117:6;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_1124":{"entryPoint":null,"id":1124,"parameterSlots":0,"returnSlots":0},"@_delegate_1100":{"entryPoint":81,"id":1100,"parameterSlots":1,"returnSlots":0},"@_fallback_1116":{"entryPoint":12,"id":1116,"parameterSlots":0,"returnSlots":0},"@_implementation_794":{"entryPoint":26,"id":794,"parameterSlots":0,"returnSlots":1},"@getAddressSlot_1984":{"entryPoint":null,"id":1984,"parameterSlots":1,"returnSlots":1},"@getImplementation_841":{"entryPoint":null,"id":841,"parameterSlots":0,"returnSlots":1}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220ad37d0d7ed97bfdbc4123764ffea1418d0640cd5fba189b06ebdf2bfe956497b64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD CALLDATACOPY 0xD0 0xD7 0xED SWAP8 0xBF 0xDB 0xC4 SLT CALLDATACOPY PUSH5 0xFFEA1418D0 PUSH5 0xCD5FBA189 0xB0 PUSH15 0xBDF2BFE956497B64736F6C63430008 SHR STOP CALLER ","sourceMap":"600:1117:6:-:0;;;2649:11:8;:9;:11::i;:::-;600:1117:6;2323:83:8;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;1583:132:6:-;1650:7;1676:32;811:66:7;1519:53;-1:-1:-1;;;;;1519:53:7;;1441:138;1676:32:6;1669:39;;1583:132;:::o;949:895:8:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27"},"gasEstimates":{"creation":{"codeDepositCost":"34000","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite"},"internal":{"_implementation()":"2156"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"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\":\"FailedCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"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.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {Proxy} from \\\"../Proxy.sol\\\";\\nimport {ERC1967Utils} from \\\"./ERC1967Utils.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy {\\n    /**\\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\\n     *\\n     * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\\n     * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    constructor(address implementation, bytes memory _data) payable {\\n        ERC1967Utils.upgradeToAndCall(implementation, _data);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return ERC1967Utils.getImplementation();\\n    }\\n}\\n\",\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This library provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\\n */\\nlibrary ERC1967Utils {\\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\\n     * function and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n}\\n\",\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"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.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"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"}],"devdoc":{"details":"This library provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] 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."}]},"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":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022847971b68d3f02ab2706ccb72ce50431612c2868d671241bc78f865e79703964736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 DUP5 PUSH26 0x71B68D3F02AB2706CCB72CE50431612C2868D671241BC78F865E PUSH26 0x703964736F6C634300081C003300000000000000000000000000 ","sourceMap":"496:5741:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;496:5741:7;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022847971b68d3f02ab2706ccb72ce50431612c2868d671241bc78f865e79703964736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 DUP5 PUSH26 0x71B68D3F02AB2706CCB72CE50431612C2868D671241BC78F865E PUSH26 0x703964736F6C634300081C003300000000000000000000000000 ","sourceMap":"496:5741:7:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"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.28+commit.7893614a\"},\"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\"}],\"devdoc\":{\"details\":\"This library provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] 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.\"}]},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This library provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\\n */\\nlibrary ERC1967Utils {\\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"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.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/Proxy.sol":{"Proxy":{"abi":[{"stateMutability":"payable","type":"fallback"}],"devdoc":{"details":"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.","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.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\\n     * function and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n}\\n\",\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"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.28+commit.7893614a\"},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"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/proxy/transparent/ProxyAdmin.sol":{"ProxyAdmin":{"abi":[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ITransparentUpgradeableProxy","name":"proxy","type":"address"},{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.","errors":{"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."}]},"kind":"dev","methods":{"constructor":{"details":"Sets the initial owner who can perform upgrades."},"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."},"upgradeAndCall(address,address,bytes)":{"details":"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-_dispatchUpgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`. - If `data` is empty, `msg.value` must be zero."}},"stateVariables":{"UPGRADE_INTERFACE_VERSION":{"details":"The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address,address)` and `upgradeAndCall(address,address,bytes)` are present, and `upgrade` must be used if no function should be called, while `upgradeAndCall` will invoke the `receive` function if the third argument is the empty byte string. If the getter returns `\"5.0.0\"`, only `upgradeAndCall(address,address,bytes)` is present, and the third argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_1158":{"entryPoint":null,"id":1158,"parameterSlots":1,"returnSlots":0},"@_629":{"entryPoint":null,"id":629,"parameterSlots":1,"returnSlots":0},"@_transferOwnership_725":{"entryPoint":110,"id":725,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":190,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:514:24","nodeType":"YulBlock","src":"0:514:24","statements":[{"nativeSrc":"6:3:24","nodeType":"YulBlock","src":"6:3:24","statements":[]},{"body":{"nativeSrc":"95:209:24","nodeType":"YulBlock","src":"95:209:24","statements":[{"body":{"nativeSrc":"141:16:24","nodeType":"YulBlock","src":"141:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"150:1:24","nodeType":"YulLiteral","src":"150:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"153:1:24","nodeType":"YulLiteral","src":"153:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"143:6:24","nodeType":"YulIdentifier","src":"143:6:24"},"nativeSrc":"143:12:24","nodeType":"YulFunctionCall","src":"143:12:24"},"nativeSrc":"143:12:24","nodeType":"YulExpressionStatement","src":"143:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"116:7:24","nodeType":"YulIdentifier","src":"116:7:24"},{"name":"headStart","nativeSrc":"125:9:24","nodeType":"YulIdentifier","src":"125:9:24"}],"functionName":{"name":"sub","nativeSrc":"112:3:24","nodeType":"YulIdentifier","src":"112:3:24"},"nativeSrc":"112:23:24","nodeType":"YulFunctionCall","src":"112:23:24"},{"kind":"number","nativeSrc":"137:2:24","nodeType":"YulLiteral","src":"137:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"108:3:24","nodeType":"YulIdentifier","src":"108:3:24"},"nativeSrc":"108:32:24","nodeType":"YulFunctionCall","src":"108:32:24"},"nativeSrc":"105:52:24","nodeType":"YulIf","src":"105:52:24"},{"nativeSrc":"166:29:24","nodeType":"YulVariableDeclaration","src":"166:29:24","value":{"arguments":[{"name":"headStart","nativeSrc":"185:9:24","nodeType":"YulIdentifier","src":"185:9:24"}],"functionName":{"name":"mload","nativeSrc":"179:5:24","nodeType":"YulIdentifier","src":"179:5:24"},"nativeSrc":"179:16:24","nodeType":"YulFunctionCall","src":"179:16:24"},"variables":[{"name":"value","nativeSrc":"170:5:24","nodeType":"YulTypedName","src":"170:5:24","type":""}]},{"body":{"nativeSrc":"258:16:24","nodeType":"YulBlock","src":"258:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"267:1:24","nodeType":"YulLiteral","src":"267:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"270:1:24","nodeType":"YulLiteral","src":"270:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"260:6:24","nodeType":"YulIdentifier","src":"260:6:24"},"nativeSrc":"260:12:24","nodeType":"YulFunctionCall","src":"260:12:24"},"nativeSrc":"260:12:24","nodeType":"YulExpressionStatement","src":"260:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"217:5:24","nodeType":"YulIdentifier","src":"217:5:24"},{"arguments":[{"name":"value","nativeSrc":"228:5:24","nodeType":"YulIdentifier","src":"228:5:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"243:3:24","nodeType":"YulLiteral","src":"243:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"248:1:24","nodeType":"YulLiteral","src":"248:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"239:3:24","nodeType":"YulIdentifier","src":"239:3:24"},"nativeSrc":"239:11:24","nodeType":"YulFunctionCall","src":"239:11:24"},{"kind":"number","nativeSrc":"252:1:24","nodeType":"YulLiteral","src":"252:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"235:3:24","nodeType":"YulIdentifier","src":"235:3:24"},"nativeSrc":"235:19:24","nodeType":"YulFunctionCall","src":"235:19:24"}],"functionName":{"name":"and","nativeSrc":"224:3:24","nodeType":"YulIdentifier","src":"224:3:24"},"nativeSrc":"224:31:24","nodeType":"YulFunctionCall","src":"224:31:24"}],"functionName":{"name":"eq","nativeSrc":"214:2:24","nodeType":"YulIdentifier","src":"214:2:24"},"nativeSrc":"214:42:24","nodeType":"YulFunctionCall","src":"214:42:24"}],"functionName":{"name":"iszero","nativeSrc":"207:6:24","nodeType":"YulIdentifier","src":"207:6:24"},"nativeSrc":"207:50:24","nodeType":"YulFunctionCall","src":"207:50:24"},"nativeSrc":"204:70:24","nodeType":"YulIf","src":"204:70:24"},{"nativeSrc":"283:15:24","nodeType":"YulAssignment","src":"283:15:24","value":{"name":"value","nativeSrc":"293:5:24","nodeType":"YulIdentifier","src":"293:5:24"},"variableNames":[{"name":"value0","nativeSrc":"283:6:24","nodeType":"YulIdentifier","src":"283:6:24"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"14:290:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"61:9:24","nodeType":"YulTypedName","src":"61:9:24","type":""},{"name":"dataEnd","nativeSrc":"72:7:24","nodeType":"YulTypedName","src":"72:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"84:6:24","nodeType":"YulTypedName","src":"84:6:24","type":""}],"src":"14:290:24"},{"body":{"nativeSrc":"410:102:24","nodeType":"YulBlock","src":"410:102:24","statements":[{"nativeSrc":"420:26:24","nodeType":"YulAssignment","src":"420:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"432:9:24","nodeType":"YulIdentifier","src":"432:9:24"},{"kind":"number","nativeSrc":"443:2:24","nodeType":"YulLiteral","src":"443:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"428:3:24","nodeType":"YulIdentifier","src":"428:3:24"},"nativeSrc":"428:18:24","nodeType":"YulFunctionCall","src":"428:18:24"},"variableNames":[{"name":"tail","nativeSrc":"420:4:24","nodeType":"YulIdentifier","src":"420:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"462:9:24","nodeType":"YulIdentifier","src":"462:9:24"},{"arguments":[{"name":"value0","nativeSrc":"477:6:24","nodeType":"YulIdentifier","src":"477:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"493:3:24","nodeType":"YulLiteral","src":"493:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"498:1:24","nodeType":"YulLiteral","src":"498:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"489:3:24","nodeType":"YulIdentifier","src":"489:3:24"},"nativeSrc":"489:11:24","nodeType":"YulFunctionCall","src":"489:11:24"},{"kind":"number","nativeSrc":"502:1:24","nodeType":"YulLiteral","src":"502:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"485:3:24","nodeType":"YulIdentifier","src":"485:3:24"},"nativeSrc":"485:19:24","nodeType":"YulFunctionCall","src":"485:19:24"}],"functionName":{"name":"and","nativeSrc":"473:3:24","nodeType":"YulIdentifier","src":"473:3:24"},"nativeSrc":"473:32:24","nodeType":"YulFunctionCall","src":"473:32:24"}],"functionName":{"name":"mstore","nativeSrc":"455:6:24","nodeType":"YulIdentifier","src":"455:6:24"},"nativeSrc":"455:51:24","nodeType":"YulFunctionCall","src":"455:51:24"},"nativeSrc":"455:51:24","nodeType":"YulExpressionStatement","src":"455:51:24"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"309:203:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"379:9:24","nodeType":"YulTypedName","src":"379:9:24","type":""},{"name":"value0","nativeSrc":"390:6:24","nodeType":"YulTypedName","src":"390:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"401:4:24","nodeType":"YulTypedName","src":"401:4:24","type":""}],"src":"309:203:24"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n}","id":24,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060405161052c38038061052c83398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b61042f806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a9190610396565b3480156100f057600080fd5b506100646100ff3660046103b0565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103cd565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff8111156102be57600080fd5b8401601f810186136102cf57600080fd5b803567ffffffffffffffff8111156102e9576102e961025c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103185761031861025c565b60405281815282820160200188101561033057600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156103765760208185018101518683018201520161035a565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a96020830184610350565b9392505050565b6000602082840312156103c257600080fd5b81356103a981610247565b6001600160a01b03831681526040602082018190526000906103f190830184610350565b94935050505056fea26469706673582212200ab660e4866fa7d104c2d56d6c7e80fcc5bee8c6d8783e1cb220fcfe8ec1870c64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x52C CODESIZE SUB DUP1 PUSH2 0x52C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5E JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x67 DUP2 PUSH2 0x6E JUMP JUMPDEST POP POP PUSH2 0xEE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x42F DUP1 PUSH2 0xFD PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x9623609D EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xA6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0x104 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0xA1 CALLDATASIZE PUSH1 0x4 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8A SWAP2 SWAP1 PUSH2 0x396 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0xFF CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x187 JUMP JUMPDEST PUSH2 0x10C PUSH2 0x1CA JUMP JUMPDEST PUSH2 0x116 PUSH1 0x0 PUSH2 0x1F7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x4F1EF286 SWAP1 CALLVALUE SWAP1 PUSH2 0x150 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3CD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x18F PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1BE JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C7 DUP2 PUSH2 0x1F7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x116 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x1B5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x292 DUP2 PUSH2 0x247 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A2 DUP2 PUSH2 0x247 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 ADD PUSH1 0x1F DUP2 ADD DUP7 SGT PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E9 JUMPI PUSH2 0x2E9 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x318 JUMPI PUSH2 0x318 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x376 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x35A JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3A9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x350 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3A9 DUP2 PUSH2 0x247 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3F1 SWAP1 DUP4 ADD DUP5 PUSH2 0x350 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xB6 PUSH1 0xE4 DUP7 PUSH16 0xA7D104C2D56D6C7E80FCC5BEE8C6D878 RETURNDATACOPY SHR 0xB2 KECCAK256 0xFC INVALID DUP15 0xC1 DUP8 0xC PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"502:1462:10:-:0;;;1329:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1371:12;-1:-1:-1;;;;;1273:26:3;;1269:95;;1322:31;;-1:-1:-1;;;1322:31:3;;1350:1;1322:31;;;455:51:24;428:18;;1322:31:3;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;1225:187;1329:58:10;502:1462;;2912:187:3;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:3;;;-1:-1:-1;;;;;;3020:17:3;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:290:24:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:24;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:24:o;309:203::-;502:1462:10;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_INTERFACE_VERSION_1148":{"entryPoint":null,"id":1148,"parameterSlots":0,"returnSlots":0},"@_checkOwner_663":{"entryPoint":458,"id":663,"parameterSlots":0,"returnSlots":0},"@_msgSender_1909":{"entryPoint":null,"id":1909,"parameterSlots":0,"returnSlots":1},"@_transferOwnership_725":{"entryPoint":503,"id":725,"parameterSlots":1,"returnSlots":0},"@owner_646":{"entryPoint":null,"id":646,"parameterSlots":0,"returnSlots":1},"@renounceOwnership_677":{"entryPoint":260,"id":677,"parameterSlots":0,"returnSlots":0},"@transferOwnership_705":{"entryPoint":391,"id":705,"parameterSlots":1,"returnSlots":0},"@upgradeAndCall_1182":{"entryPoint":280,"id":1182,"parameterSlots":3,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":944,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_ITransparentUpgradeableProxy_$1205t_addresst_bytes_memory_ptr":{"entryPoint":626,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_string":{"entryPoint":848,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":973,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":918,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":604,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_contract_ITransparentUpgradeableProxy":{"entryPoint":583,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:3071:24","nodeType":"YulBlock","src":"0:3071:24","statements":[{"nativeSrc":"6:3:24","nodeType":"YulBlock","src":"6:3:24","statements":[]},{"body":{"nativeSrc":"115:102:24","nodeType":"YulBlock","src":"115:102:24","statements":[{"nativeSrc":"125:26:24","nodeType":"YulAssignment","src":"125:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"137:9:24","nodeType":"YulIdentifier","src":"137:9:24"},{"kind":"number","nativeSrc":"148:2:24","nodeType":"YulLiteral","src":"148:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"133:3:24","nodeType":"YulIdentifier","src":"133:3:24"},"nativeSrc":"133:18:24","nodeType":"YulFunctionCall","src":"133:18:24"},"variableNames":[{"name":"tail","nativeSrc":"125:4:24","nodeType":"YulIdentifier","src":"125:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"167:9:24","nodeType":"YulIdentifier","src":"167:9:24"},{"arguments":[{"name":"value0","nativeSrc":"182:6:24","nodeType":"YulIdentifier","src":"182:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"198:3:24","nodeType":"YulLiteral","src":"198:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"203:1:24","nodeType":"YulLiteral","src":"203:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"194:3:24","nodeType":"YulIdentifier","src":"194:3:24"},"nativeSrc":"194:11:24","nodeType":"YulFunctionCall","src":"194:11:24"},{"kind":"number","nativeSrc":"207:1:24","nodeType":"YulLiteral","src":"207:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"190:3:24","nodeType":"YulIdentifier","src":"190:3:24"},"nativeSrc":"190:19:24","nodeType":"YulFunctionCall","src":"190:19:24"}],"functionName":{"name":"and","nativeSrc":"178:3:24","nodeType":"YulIdentifier","src":"178:3:24"},"nativeSrc":"178:32:24","nodeType":"YulFunctionCall","src":"178:32:24"}],"functionName":{"name":"mstore","nativeSrc":"160:6:24","nodeType":"YulIdentifier","src":"160:6:24"},"nativeSrc":"160:51:24","nodeType":"YulFunctionCall","src":"160:51:24"},"nativeSrc":"160:51:24","nodeType":"YulExpressionStatement","src":"160:51:24"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"14:203:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"84:9:24","nodeType":"YulTypedName","src":"84:9:24","type":""},{"name":"value0","nativeSrc":"95:6:24","nodeType":"YulTypedName","src":"95:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"106:4:24","nodeType":"YulTypedName","src":"106:4:24","type":""}],"src":"14:203:24"},{"body":{"nativeSrc":"297:86:24","nodeType":"YulBlock","src":"297:86:24","statements":[{"body":{"nativeSrc":"361:16:24","nodeType":"YulBlock","src":"361:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"370:1:24","nodeType":"YulLiteral","src":"370:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"373:1:24","nodeType":"YulLiteral","src":"373:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"363:6:24","nodeType":"YulIdentifier","src":"363:6:24"},"nativeSrc":"363:12:24","nodeType":"YulFunctionCall","src":"363:12:24"},"nativeSrc":"363:12:24","nodeType":"YulExpressionStatement","src":"363:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"320:5:24","nodeType":"YulIdentifier","src":"320:5:24"},{"arguments":[{"name":"value","nativeSrc":"331:5:24","nodeType":"YulIdentifier","src":"331:5:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"346:3:24","nodeType":"YulLiteral","src":"346:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"351:1:24","nodeType":"YulLiteral","src":"351:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"342:3:24","nodeType":"YulIdentifier","src":"342:3:24"},"nativeSrc":"342:11:24","nodeType":"YulFunctionCall","src":"342:11:24"},{"kind":"number","nativeSrc":"355:1:24","nodeType":"YulLiteral","src":"355:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"338:3:24","nodeType":"YulIdentifier","src":"338:3:24"},"nativeSrc":"338:19:24","nodeType":"YulFunctionCall","src":"338:19:24"}],"functionName":{"name":"and","nativeSrc":"327:3:24","nodeType":"YulIdentifier","src":"327:3:24"},"nativeSrc":"327:31:24","nodeType":"YulFunctionCall","src":"327:31:24"}],"functionName":{"name":"eq","nativeSrc":"317:2:24","nodeType":"YulIdentifier","src":"317:2:24"},"nativeSrc":"317:42:24","nodeType":"YulFunctionCall","src":"317:42:24"}],"functionName":{"name":"iszero","nativeSrc":"310:6:24","nodeType":"YulIdentifier","src":"310:6:24"},"nativeSrc":"310:50:24","nodeType":"YulFunctionCall","src":"310:50:24"},"nativeSrc":"307:70:24","nodeType":"YulIf","src":"307:70:24"}]},"name":"validator_revert_contract_ITransparentUpgradeableProxy","nativeSrc":"222:161:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"286:5:24","nodeType":"YulTypedName","src":"286:5:24","type":""}],"src":"222:161:24"},{"body":{"nativeSrc":"420:95:24","nodeType":"YulBlock","src":"420:95:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"437:1:24","nodeType":"YulLiteral","src":"437:1:24","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"444:3:24","nodeType":"YulLiteral","src":"444:3:24","type":"","value":"224"},{"kind":"number","nativeSrc":"449:10:24","nodeType":"YulLiteral","src":"449:10:24","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"440:3:24","nodeType":"YulIdentifier","src":"440:3:24"},"nativeSrc":"440:20:24","nodeType":"YulFunctionCall","src":"440:20:24"}],"functionName":{"name":"mstore","nativeSrc":"430:6:24","nodeType":"YulIdentifier","src":"430:6:24"},"nativeSrc":"430:31:24","nodeType":"YulFunctionCall","src":"430:31:24"},"nativeSrc":"430:31:24","nodeType":"YulExpressionStatement","src":"430:31:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"477:1:24","nodeType":"YulLiteral","src":"477:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"480:4:24","nodeType":"YulLiteral","src":"480:4:24","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"470:6:24","nodeType":"YulIdentifier","src":"470:6:24"},"nativeSrc":"470:15:24","nodeType":"YulFunctionCall","src":"470:15:24"},"nativeSrc":"470:15:24","nodeType":"YulExpressionStatement","src":"470:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"501:1:24","nodeType":"YulLiteral","src":"501:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"504:4:24","nodeType":"YulLiteral","src":"504:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"494:6:24","nodeType":"YulIdentifier","src":"494:6:24"},"nativeSrc":"494:15:24","nodeType":"YulFunctionCall","src":"494:15:24"},"nativeSrc":"494:15:24","nodeType":"YulExpressionStatement","src":"494:15:24"}]},"name":"panic_error_0x41","nativeSrc":"388:127:24","nodeType":"YulFunctionDefinition","src":"388:127:24"},{"body":{"nativeSrc":"670:1167:24","nodeType":"YulBlock","src":"670:1167:24","statements":[{"body":{"nativeSrc":"716:16:24","nodeType":"YulBlock","src":"716:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"725:1:24","nodeType":"YulLiteral","src":"725:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"728:1:24","nodeType":"YulLiteral","src":"728:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"718:6:24","nodeType":"YulIdentifier","src":"718:6:24"},"nativeSrc":"718:12:24","nodeType":"YulFunctionCall","src":"718:12:24"},"nativeSrc":"718:12:24","nodeType":"YulExpressionStatement","src":"718:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"691:7:24","nodeType":"YulIdentifier","src":"691:7:24"},{"name":"headStart","nativeSrc":"700:9:24","nodeType":"YulIdentifier","src":"700:9:24"}],"functionName":{"name":"sub","nativeSrc":"687:3:24","nodeType":"YulIdentifier","src":"687:3:24"},"nativeSrc":"687:23:24","nodeType":"YulFunctionCall","src":"687:23:24"},{"kind":"number","nativeSrc":"712:2:24","nodeType":"YulLiteral","src":"712:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"683:3:24","nodeType":"YulIdentifier","src":"683:3:24"},"nativeSrc":"683:32:24","nodeType":"YulFunctionCall","src":"683:32:24"},"nativeSrc":"680:52:24","nodeType":"YulIf","src":"680:52:24"},{"nativeSrc":"741:36:24","nodeType":"YulVariableDeclaration","src":"741:36:24","value":{"arguments":[{"name":"headStart","nativeSrc":"767:9:24","nodeType":"YulIdentifier","src":"767:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"754:12:24","nodeType":"YulIdentifier","src":"754:12:24"},"nativeSrc":"754:23:24","nodeType":"YulFunctionCall","src":"754:23:24"},"variables":[{"name":"value","nativeSrc":"745:5:24","nodeType":"YulTypedName","src":"745:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"841:5:24","nodeType":"YulIdentifier","src":"841:5:24"}],"functionName":{"name":"validator_revert_contract_ITransparentUpgradeableProxy","nativeSrc":"786:54:24","nodeType":"YulIdentifier","src":"786:54:24"},"nativeSrc":"786:61:24","nodeType":"YulFunctionCall","src":"786:61:24"},"nativeSrc":"786:61:24","nodeType":"YulExpressionStatement","src":"786:61:24"},{"nativeSrc":"856:15:24","nodeType":"YulAssignment","src":"856:15:24","value":{"name":"value","nativeSrc":"866:5:24","nodeType":"YulIdentifier","src":"866:5:24"},"variableNames":[{"name":"value0","nativeSrc":"856:6:24","nodeType":"YulIdentifier","src":"856:6:24"}]},{"nativeSrc":"880:47:24","nodeType":"YulVariableDeclaration","src":"880:47:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"912:9:24","nodeType":"YulIdentifier","src":"912:9:24"},{"kind":"number","nativeSrc":"923:2:24","nodeType":"YulLiteral","src":"923:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"908:3:24","nodeType":"YulIdentifier","src":"908:3:24"},"nativeSrc":"908:18:24","nodeType":"YulFunctionCall","src":"908:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"895:12:24","nodeType":"YulIdentifier","src":"895:12:24"},"nativeSrc":"895:32:24","nodeType":"YulFunctionCall","src":"895:32:24"},"variables":[{"name":"value_1","nativeSrc":"884:7:24","nodeType":"YulTypedName","src":"884:7:24","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"991:7:24","nodeType":"YulIdentifier","src":"991:7:24"}],"functionName":{"name":"validator_revert_contract_ITransparentUpgradeableProxy","nativeSrc":"936:54:24","nodeType":"YulIdentifier","src":"936:54:24"},"nativeSrc":"936:63:24","nodeType":"YulFunctionCall","src":"936:63:24"},"nativeSrc":"936:63:24","nodeType":"YulExpressionStatement","src":"936:63:24"},{"nativeSrc":"1008:17:24","nodeType":"YulAssignment","src":"1008:17:24","value":{"name":"value_1","nativeSrc":"1018:7:24","nodeType":"YulIdentifier","src":"1018:7:24"},"variableNames":[{"name":"value1","nativeSrc":"1008:6:24","nodeType":"YulIdentifier","src":"1008:6:24"}]},{"nativeSrc":"1034:46:24","nodeType":"YulVariableDeclaration","src":"1034:46:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"1065:9:24","nodeType":"YulIdentifier","src":"1065:9:24"},{"kind":"number","nativeSrc":"1076:2:24","nodeType":"YulLiteral","src":"1076:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"1061:3:24","nodeType":"YulIdentifier","src":"1061:3:24"},"nativeSrc":"1061:18:24","nodeType":"YulFunctionCall","src":"1061:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"1048:12:24","nodeType":"YulIdentifier","src":"1048:12:24"},"nativeSrc":"1048:32:24","nodeType":"YulFunctionCall","src":"1048:32:24"},"variables":[{"name":"offset","nativeSrc":"1038:6:24","nodeType":"YulTypedName","src":"1038:6:24","type":""}]},{"body":{"nativeSrc":"1123:16:24","nodeType":"YulBlock","src":"1123:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1132:1:24","nodeType":"YulLiteral","src":"1132:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1135:1:24","nodeType":"YulLiteral","src":"1135:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1125:6:24","nodeType":"YulIdentifier","src":"1125:6:24"},"nativeSrc":"1125:12:24","nodeType":"YulFunctionCall","src":"1125:12:24"},"nativeSrc":"1125:12:24","nodeType":"YulExpressionStatement","src":"1125:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"1095:6:24","nodeType":"YulIdentifier","src":"1095:6:24"},{"kind":"number","nativeSrc":"1103:18:24","nodeType":"YulLiteral","src":"1103:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1092:2:24","nodeType":"YulIdentifier","src":"1092:2:24"},"nativeSrc":"1092:30:24","nodeType":"YulFunctionCall","src":"1092:30:24"},"nativeSrc":"1089:50:24","nodeType":"YulIf","src":"1089:50:24"},{"nativeSrc":"1148:32:24","nodeType":"YulVariableDeclaration","src":"1148:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"1162:9:24","nodeType":"YulIdentifier","src":"1162:9:24"},{"name":"offset","nativeSrc":"1173:6:24","nodeType":"YulIdentifier","src":"1173:6:24"}],"functionName":{"name":"add","nativeSrc":"1158:3:24","nodeType":"YulIdentifier","src":"1158:3:24"},"nativeSrc":"1158:22:24","nodeType":"YulFunctionCall","src":"1158:22:24"},"variables":[{"name":"_1","nativeSrc":"1152:2:24","nodeType":"YulTypedName","src":"1152:2:24","type":""}]},{"body":{"nativeSrc":"1228:16:24","nodeType":"YulBlock","src":"1228:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1237:1:24","nodeType":"YulLiteral","src":"1237:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1240:1:24","nodeType":"YulLiteral","src":"1240:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1230:6:24","nodeType":"YulIdentifier","src":"1230:6:24"},"nativeSrc":"1230:12:24","nodeType":"YulFunctionCall","src":"1230:12:24"},"nativeSrc":"1230:12:24","nodeType":"YulExpressionStatement","src":"1230:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1207:2:24","nodeType":"YulIdentifier","src":"1207:2:24"},{"kind":"number","nativeSrc":"1211:4:24","nodeType":"YulLiteral","src":"1211:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1203:3:24","nodeType":"YulIdentifier","src":"1203:3:24"},"nativeSrc":"1203:13:24","nodeType":"YulFunctionCall","src":"1203:13:24"},{"name":"dataEnd","nativeSrc":"1218:7:24","nodeType":"YulIdentifier","src":"1218:7:24"}],"functionName":{"name":"slt","nativeSrc":"1199:3:24","nodeType":"YulIdentifier","src":"1199:3:24"},"nativeSrc":"1199:27:24","nodeType":"YulFunctionCall","src":"1199:27:24"}],"functionName":{"name":"iszero","nativeSrc":"1192:6:24","nodeType":"YulIdentifier","src":"1192:6:24"},"nativeSrc":"1192:35:24","nodeType":"YulFunctionCall","src":"1192:35:24"},"nativeSrc":"1189:55:24","nodeType":"YulIf","src":"1189:55:24"},{"nativeSrc":"1253:30:24","nodeType":"YulVariableDeclaration","src":"1253:30:24","value":{"arguments":[{"name":"_1","nativeSrc":"1280:2:24","nodeType":"YulIdentifier","src":"1280:2:24"}],"functionName":{"name":"calldataload","nativeSrc":"1267:12:24","nodeType":"YulIdentifier","src":"1267:12:24"},"nativeSrc":"1267:16:24","nodeType":"YulFunctionCall","src":"1267:16:24"},"variables":[{"name":"length","nativeSrc":"1257:6:24","nodeType":"YulTypedName","src":"1257:6:24","type":""}]},{"body":{"nativeSrc":"1326:22:24","nodeType":"YulBlock","src":"1326:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1328:16:24","nodeType":"YulIdentifier","src":"1328:16:24"},"nativeSrc":"1328:18:24","nodeType":"YulFunctionCall","src":"1328:18:24"},"nativeSrc":"1328:18:24","nodeType":"YulExpressionStatement","src":"1328:18:24"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1298:6:24","nodeType":"YulIdentifier","src":"1298:6:24"},{"kind":"number","nativeSrc":"1306:18:24","nodeType":"YulLiteral","src":"1306:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1295:2:24","nodeType":"YulIdentifier","src":"1295:2:24"},"nativeSrc":"1295:30:24","nodeType":"YulFunctionCall","src":"1295:30:24"},"nativeSrc":"1292:56:24","nodeType":"YulIf","src":"1292:56:24"},{"nativeSrc":"1357:23:24","nodeType":"YulVariableDeclaration","src":"1357:23:24","value":{"arguments":[{"kind":"number","nativeSrc":"1377:2:24","nodeType":"YulLiteral","src":"1377:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1371:5:24","nodeType":"YulIdentifier","src":"1371:5:24"},"nativeSrc":"1371:9:24","nodeType":"YulFunctionCall","src":"1371:9:24"},"variables":[{"name":"memPtr","nativeSrc":"1361:6:24","nodeType":"YulTypedName","src":"1361:6:24","type":""}]},{"nativeSrc":"1389:85:24","nodeType":"YulVariableDeclaration","src":"1389:85:24","value":{"arguments":[{"name":"memPtr","nativeSrc":"1411:6:24","nodeType":"YulIdentifier","src":"1411:6:24"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1435:6:24","nodeType":"YulIdentifier","src":"1435:6:24"},{"kind":"number","nativeSrc":"1443:4:24","nodeType":"YulLiteral","src":"1443:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1431:3:24","nodeType":"YulIdentifier","src":"1431:3:24"},"nativeSrc":"1431:17:24","nodeType":"YulFunctionCall","src":"1431:17:24"},{"arguments":[{"kind":"number","nativeSrc":"1454:2:24","nodeType":"YulLiteral","src":"1454:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1450:3:24","nodeType":"YulIdentifier","src":"1450:3:24"},"nativeSrc":"1450:7:24","nodeType":"YulFunctionCall","src":"1450:7:24"}],"functionName":{"name":"and","nativeSrc":"1427:3:24","nodeType":"YulIdentifier","src":"1427:3:24"},"nativeSrc":"1427:31:24","nodeType":"YulFunctionCall","src":"1427:31:24"},{"kind":"number","nativeSrc":"1460:2:24","nodeType":"YulLiteral","src":"1460:2:24","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"1423:3:24","nodeType":"YulIdentifier","src":"1423:3:24"},"nativeSrc":"1423:40:24","nodeType":"YulFunctionCall","src":"1423:40:24"},{"arguments":[{"kind":"number","nativeSrc":"1469:2:24","nodeType":"YulLiteral","src":"1469:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1465:3:24","nodeType":"YulIdentifier","src":"1465:3:24"},"nativeSrc":"1465:7:24","nodeType":"YulFunctionCall","src":"1465:7:24"}],"functionName":{"name":"and","nativeSrc":"1419:3:24","nodeType":"YulIdentifier","src":"1419:3:24"},"nativeSrc":"1419:54:24","nodeType":"YulFunctionCall","src":"1419:54:24"}],"functionName":{"name":"add","nativeSrc":"1407:3:24","nodeType":"YulIdentifier","src":"1407:3:24"},"nativeSrc":"1407:67:24","nodeType":"YulFunctionCall","src":"1407:67:24"},"variables":[{"name":"newFreePtr","nativeSrc":"1393:10:24","nodeType":"YulTypedName","src":"1393:10:24","type":""}]},{"body":{"nativeSrc":"1549:22:24","nodeType":"YulBlock","src":"1549:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1551:16:24","nodeType":"YulIdentifier","src":"1551:16:24"},"nativeSrc":"1551:18:24","nodeType":"YulFunctionCall","src":"1551:18:24"},"nativeSrc":"1551:18:24","nodeType":"YulExpressionStatement","src":"1551:18:24"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1492:10:24","nodeType":"YulIdentifier","src":"1492:10:24"},{"kind":"number","nativeSrc":"1504:18:24","nodeType":"YulLiteral","src":"1504:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1489:2:24","nodeType":"YulIdentifier","src":"1489:2:24"},"nativeSrc":"1489:34:24","nodeType":"YulFunctionCall","src":"1489:34:24"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1528:10:24","nodeType":"YulIdentifier","src":"1528:10:24"},{"name":"memPtr","nativeSrc":"1540:6:24","nodeType":"YulIdentifier","src":"1540:6:24"}],"functionName":{"name":"lt","nativeSrc":"1525:2:24","nodeType":"YulIdentifier","src":"1525:2:24"},"nativeSrc":"1525:22:24","nodeType":"YulFunctionCall","src":"1525:22:24"}],"functionName":{"name":"or","nativeSrc":"1486:2:24","nodeType":"YulIdentifier","src":"1486:2:24"},"nativeSrc":"1486:62:24","nodeType":"YulFunctionCall","src":"1486:62:24"},"nativeSrc":"1483:88:24","nodeType":"YulIf","src":"1483:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1587:2:24","nodeType":"YulLiteral","src":"1587:2:24","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1591:10:24","nodeType":"YulIdentifier","src":"1591:10:24"}],"functionName":{"name":"mstore","nativeSrc":"1580:6:24","nodeType":"YulIdentifier","src":"1580:6:24"},"nativeSrc":"1580:22:24","nodeType":"YulFunctionCall","src":"1580:22:24"},"nativeSrc":"1580:22:24","nodeType":"YulExpressionStatement","src":"1580:22:24"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1618:6:24","nodeType":"YulIdentifier","src":"1618:6:24"},{"name":"length","nativeSrc":"1626:6:24","nodeType":"YulIdentifier","src":"1626:6:24"}],"functionName":{"name":"mstore","nativeSrc":"1611:6:24","nodeType":"YulIdentifier","src":"1611:6:24"},"nativeSrc":"1611:22:24","nodeType":"YulFunctionCall","src":"1611:22:24"},"nativeSrc":"1611:22:24","nodeType":"YulExpressionStatement","src":"1611:22:24"},{"body":{"nativeSrc":"1683:16:24","nodeType":"YulBlock","src":"1683:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1692:1:24","nodeType":"YulLiteral","src":"1692:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1695:1:24","nodeType":"YulLiteral","src":"1695:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1685:6:24","nodeType":"YulIdentifier","src":"1685:6:24"},"nativeSrc":"1685:12:24","nodeType":"YulFunctionCall","src":"1685:12:24"},"nativeSrc":"1685:12:24","nodeType":"YulExpressionStatement","src":"1685:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1656:2:24","nodeType":"YulIdentifier","src":"1656:2:24"},{"name":"length","nativeSrc":"1660:6:24","nodeType":"YulIdentifier","src":"1660:6:24"}],"functionName":{"name":"add","nativeSrc":"1652:3:24","nodeType":"YulIdentifier","src":"1652:3:24"},"nativeSrc":"1652:15:24","nodeType":"YulFunctionCall","src":"1652:15:24"},{"kind":"number","nativeSrc":"1669:2:24","nodeType":"YulLiteral","src":"1669:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1648:3:24","nodeType":"YulIdentifier","src":"1648:3:24"},"nativeSrc":"1648:24:24","nodeType":"YulFunctionCall","src":"1648:24:24"},{"name":"dataEnd","nativeSrc":"1674:7:24","nodeType":"YulIdentifier","src":"1674:7:24"}],"functionName":{"name":"gt","nativeSrc":"1645:2:24","nodeType":"YulIdentifier","src":"1645:2:24"},"nativeSrc":"1645:37:24","nodeType":"YulFunctionCall","src":"1645:37:24"},"nativeSrc":"1642:57:24","nodeType":"YulIf","src":"1642:57:24"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1725:6:24","nodeType":"YulIdentifier","src":"1725:6:24"},{"kind":"number","nativeSrc":"1733:2:24","nodeType":"YulLiteral","src":"1733:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1721:3:24","nodeType":"YulIdentifier","src":"1721:3:24"},"nativeSrc":"1721:15:24","nodeType":"YulFunctionCall","src":"1721:15:24"},{"arguments":[{"name":"_1","nativeSrc":"1742:2:24","nodeType":"YulIdentifier","src":"1742:2:24"},{"kind":"number","nativeSrc":"1746:2:24","nodeType":"YulLiteral","src":"1746:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1738:3:24","nodeType":"YulIdentifier","src":"1738:3:24"},"nativeSrc":"1738:11:24","nodeType":"YulFunctionCall","src":"1738:11:24"},{"name":"length","nativeSrc":"1751:6:24","nodeType":"YulIdentifier","src":"1751:6:24"}],"functionName":{"name":"calldatacopy","nativeSrc":"1708:12:24","nodeType":"YulIdentifier","src":"1708:12:24"},"nativeSrc":"1708:50:24","nodeType":"YulFunctionCall","src":"1708:50:24"},"nativeSrc":"1708:50:24","nodeType":"YulExpressionStatement","src":"1708:50:24"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1782:6:24","nodeType":"YulIdentifier","src":"1782:6:24"},{"name":"length","nativeSrc":"1790:6:24","nodeType":"YulIdentifier","src":"1790:6:24"}],"functionName":{"name":"add","nativeSrc":"1778:3:24","nodeType":"YulIdentifier","src":"1778:3:24"},"nativeSrc":"1778:19:24","nodeType":"YulFunctionCall","src":"1778:19:24"},{"kind":"number","nativeSrc":"1799:2:24","nodeType":"YulLiteral","src":"1799:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1774:3:24","nodeType":"YulIdentifier","src":"1774:3:24"},"nativeSrc":"1774:28:24","nodeType":"YulFunctionCall","src":"1774:28:24"},{"kind":"number","nativeSrc":"1804:1:24","nodeType":"YulLiteral","src":"1804:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1767:6:24","nodeType":"YulIdentifier","src":"1767:6:24"},"nativeSrc":"1767:39:24","nodeType":"YulFunctionCall","src":"1767:39:24"},"nativeSrc":"1767:39:24","nodeType":"YulExpressionStatement","src":"1767:39:24"},{"nativeSrc":"1815:16:24","nodeType":"YulAssignment","src":"1815:16:24","value":{"name":"memPtr","nativeSrc":"1825:6:24","nodeType":"YulIdentifier","src":"1825:6:24"},"variableNames":[{"name":"value2","nativeSrc":"1815:6:24","nodeType":"YulIdentifier","src":"1815:6:24"}]}]},"name":"abi_decode_tuple_t_contract$_ITransparentUpgradeableProxy_$1205t_addresst_bytes_memory_ptr","nativeSrc":"520:1317:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"620:9:24","nodeType":"YulTypedName","src":"620:9:24","type":""},{"name":"dataEnd","nativeSrc":"631:7:24","nodeType":"YulTypedName","src":"631:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"643:6:24","nodeType":"YulTypedName","src":"643:6:24","type":""},{"name":"value1","nativeSrc":"651:6:24","nodeType":"YulTypedName","src":"651:6:24","type":""},{"name":"value2","nativeSrc":"659:6:24","nodeType":"YulTypedName","src":"659:6:24","type":""}],"src":"520:1317:24"},{"body":{"nativeSrc":"1892:350:24","nodeType":"YulBlock","src":"1892:350:24","statements":[{"nativeSrc":"1902:26:24","nodeType":"YulVariableDeclaration","src":"1902:26:24","value":{"arguments":[{"name":"value","nativeSrc":"1922:5:24","nodeType":"YulIdentifier","src":"1922:5:24"}],"functionName":{"name":"mload","nativeSrc":"1916:5:24","nodeType":"YulIdentifier","src":"1916:5:24"},"nativeSrc":"1916:12:24","nodeType":"YulFunctionCall","src":"1916:12:24"},"variables":[{"name":"length","nativeSrc":"1906:6:24","nodeType":"YulTypedName","src":"1906:6:24","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"1944:3:24","nodeType":"YulIdentifier","src":"1944:3:24"},{"name":"length","nativeSrc":"1949:6:24","nodeType":"YulIdentifier","src":"1949:6:24"}],"functionName":{"name":"mstore","nativeSrc":"1937:6:24","nodeType":"YulIdentifier","src":"1937:6:24"},"nativeSrc":"1937:19:24","nodeType":"YulFunctionCall","src":"1937:19:24"},"nativeSrc":"1937:19:24","nodeType":"YulExpressionStatement","src":"1937:19:24"},{"nativeSrc":"1965:10:24","nodeType":"YulVariableDeclaration","src":"1965:10:24","value":{"kind":"number","nativeSrc":"1974:1:24","nodeType":"YulLiteral","src":"1974:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"1969:1:24","nodeType":"YulTypedName","src":"1969:1:24","type":""}]},{"body":{"nativeSrc":"2036:87:24","nodeType":"YulBlock","src":"2036:87:24","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2065:3:24","nodeType":"YulIdentifier","src":"2065:3:24"},{"name":"i","nativeSrc":"2070:1:24","nodeType":"YulIdentifier","src":"2070:1:24"}],"functionName":{"name":"add","nativeSrc":"2061:3:24","nodeType":"YulIdentifier","src":"2061:3:24"},"nativeSrc":"2061:11:24","nodeType":"YulFunctionCall","src":"2061:11:24"},{"kind":"number","nativeSrc":"2074:4:24","nodeType":"YulLiteral","src":"2074:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2057:3:24","nodeType":"YulIdentifier","src":"2057:3:24"},"nativeSrc":"2057:22:24","nodeType":"YulFunctionCall","src":"2057:22:24"},{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2095:5:24","nodeType":"YulIdentifier","src":"2095:5:24"},{"name":"i","nativeSrc":"2102:1:24","nodeType":"YulIdentifier","src":"2102:1:24"}],"functionName":{"name":"add","nativeSrc":"2091:3:24","nodeType":"YulIdentifier","src":"2091:3:24"},"nativeSrc":"2091:13:24","nodeType":"YulFunctionCall","src":"2091:13:24"},{"kind":"number","nativeSrc":"2106:4:24","nodeType":"YulLiteral","src":"2106:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2087:3:24","nodeType":"YulIdentifier","src":"2087:3:24"},"nativeSrc":"2087:24:24","nodeType":"YulFunctionCall","src":"2087:24:24"}],"functionName":{"name":"mload","nativeSrc":"2081:5:24","nodeType":"YulIdentifier","src":"2081:5:24"},"nativeSrc":"2081:31:24","nodeType":"YulFunctionCall","src":"2081:31:24"}],"functionName":{"name":"mstore","nativeSrc":"2050:6:24","nodeType":"YulIdentifier","src":"2050:6:24"},"nativeSrc":"2050:63:24","nodeType":"YulFunctionCall","src":"2050:63:24"},"nativeSrc":"2050:63:24","nodeType":"YulExpressionStatement","src":"2050:63:24"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"1995:1:24","nodeType":"YulIdentifier","src":"1995:1:24"},{"name":"length","nativeSrc":"1998:6:24","nodeType":"YulIdentifier","src":"1998:6:24"}],"functionName":{"name":"lt","nativeSrc":"1992:2:24","nodeType":"YulIdentifier","src":"1992:2:24"},"nativeSrc":"1992:13:24","nodeType":"YulFunctionCall","src":"1992:13:24"},"nativeSrc":"1984:139:24","nodeType":"YulForLoop","post":{"nativeSrc":"2006:21:24","nodeType":"YulBlock","src":"2006:21:24","statements":[{"nativeSrc":"2008:17:24","nodeType":"YulAssignment","src":"2008:17:24","value":{"arguments":[{"name":"i","nativeSrc":"2017:1:24","nodeType":"YulIdentifier","src":"2017:1:24"},{"kind":"number","nativeSrc":"2020:4:24","nodeType":"YulLiteral","src":"2020:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2013:3:24","nodeType":"YulIdentifier","src":"2013:3:24"},"nativeSrc":"2013:12:24","nodeType":"YulFunctionCall","src":"2013:12:24"},"variableNames":[{"name":"i","nativeSrc":"2008:1:24","nodeType":"YulIdentifier","src":"2008:1:24"}]}]},"pre":{"nativeSrc":"1988:3:24","nodeType":"YulBlock","src":"1988:3:24","statements":[]},"src":"1984:139:24"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2147:3:24","nodeType":"YulIdentifier","src":"2147:3:24"},{"name":"length","nativeSrc":"2152:6:24","nodeType":"YulIdentifier","src":"2152:6:24"}],"functionName":{"name":"add","nativeSrc":"2143:3:24","nodeType":"YulIdentifier","src":"2143:3:24"},"nativeSrc":"2143:16:24","nodeType":"YulFunctionCall","src":"2143:16:24"},{"kind":"number","nativeSrc":"2161:4:24","nodeType":"YulLiteral","src":"2161:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2139:3:24","nodeType":"YulIdentifier","src":"2139:3:24"},"nativeSrc":"2139:27:24","nodeType":"YulFunctionCall","src":"2139:27:24"},{"kind":"number","nativeSrc":"2168:1:24","nodeType":"YulLiteral","src":"2168:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2132:6:24","nodeType":"YulIdentifier","src":"2132:6:24"},"nativeSrc":"2132:38:24","nodeType":"YulFunctionCall","src":"2132:38:24"},"nativeSrc":"2132:38:24","nodeType":"YulExpressionStatement","src":"2132:38:24"},{"nativeSrc":"2179:57:24","nodeType":"YulAssignment","src":"2179:57:24","value":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2194:3:24","nodeType":"YulIdentifier","src":"2194:3:24"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2207:6:24","nodeType":"YulIdentifier","src":"2207:6:24"},{"kind":"number","nativeSrc":"2215:2:24","nodeType":"YulLiteral","src":"2215:2:24","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"2203:3:24","nodeType":"YulIdentifier","src":"2203:3:24"},"nativeSrc":"2203:15:24","nodeType":"YulFunctionCall","src":"2203:15:24"},{"arguments":[{"kind":"number","nativeSrc":"2224:2:24","nodeType":"YulLiteral","src":"2224:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"2220:3:24","nodeType":"YulIdentifier","src":"2220:3:24"},"nativeSrc":"2220:7:24","nodeType":"YulFunctionCall","src":"2220:7:24"}],"functionName":{"name":"and","nativeSrc":"2199:3:24","nodeType":"YulIdentifier","src":"2199:3:24"},"nativeSrc":"2199:29:24","nodeType":"YulFunctionCall","src":"2199:29:24"}],"functionName":{"name":"add","nativeSrc":"2190:3:24","nodeType":"YulIdentifier","src":"2190:3:24"},"nativeSrc":"2190:39:24","nodeType":"YulFunctionCall","src":"2190:39:24"},{"kind":"number","nativeSrc":"2231:4:24","nodeType":"YulLiteral","src":"2231:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2186:3:24","nodeType":"YulIdentifier","src":"2186:3:24"},"nativeSrc":"2186:50:24","nodeType":"YulFunctionCall","src":"2186:50:24"},"variableNames":[{"name":"end","nativeSrc":"2179:3:24","nodeType":"YulIdentifier","src":"2179:3:24"}]}]},"name":"abi_encode_string","nativeSrc":"1842:400:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"1869:5:24","nodeType":"YulTypedName","src":"1869:5:24","type":""},{"name":"pos","nativeSrc":"1876:3:24","nodeType":"YulTypedName","src":"1876:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1884:3:24","nodeType":"YulTypedName","src":"1884:3:24","type":""}],"src":"1842:400:24"},{"body":{"nativeSrc":"2368:99:24","nodeType":"YulBlock","src":"2368:99:24","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2385:9:24","nodeType":"YulIdentifier","src":"2385:9:24"},{"kind":"number","nativeSrc":"2396:2:24","nodeType":"YulLiteral","src":"2396:2:24","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"2378:6:24","nodeType":"YulIdentifier","src":"2378:6:24"},"nativeSrc":"2378:21:24","nodeType":"YulFunctionCall","src":"2378:21:24"},"nativeSrc":"2378:21:24","nodeType":"YulExpressionStatement","src":"2378:21:24"},{"nativeSrc":"2408:53:24","nodeType":"YulAssignment","src":"2408:53:24","value":{"arguments":[{"name":"value0","nativeSrc":"2434:6:24","nodeType":"YulIdentifier","src":"2434:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"2446:9:24","nodeType":"YulIdentifier","src":"2446:9:24"},{"kind":"number","nativeSrc":"2457:2:24","nodeType":"YulLiteral","src":"2457:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2442:3:24","nodeType":"YulIdentifier","src":"2442:3:24"},"nativeSrc":"2442:18:24","nodeType":"YulFunctionCall","src":"2442:18:24"}],"functionName":{"name":"abi_encode_string","nativeSrc":"2416:17:24","nodeType":"YulIdentifier","src":"2416:17:24"},"nativeSrc":"2416:45:24","nodeType":"YulFunctionCall","src":"2416:45:24"},"variableNames":[{"name":"tail","nativeSrc":"2408:4:24","nodeType":"YulIdentifier","src":"2408:4:24"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"2247:220:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2337:9:24","nodeType":"YulTypedName","src":"2337:9:24","type":""},{"name":"value0","nativeSrc":"2348:6:24","nodeType":"YulTypedName","src":"2348:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2359:4:24","nodeType":"YulTypedName","src":"2359:4:24","type":""}],"src":"2247:220:24"},{"body":{"nativeSrc":"2542:207:24","nodeType":"YulBlock","src":"2542:207:24","statements":[{"body":{"nativeSrc":"2588:16:24","nodeType":"YulBlock","src":"2588:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2597:1:24","nodeType":"YulLiteral","src":"2597:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"2600:1:24","nodeType":"YulLiteral","src":"2600:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2590:6:24","nodeType":"YulIdentifier","src":"2590:6:24"},"nativeSrc":"2590:12:24","nodeType":"YulFunctionCall","src":"2590:12:24"},"nativeSrc":"2590:12:24","nodeType":"YulExpressionStatement","src":"2590:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"2563:7:24","nodeType":"YulIdentifier","src":"2563:7:24"},{"name":"headStart","nativeSrc":"2572:9:24","nodeType":"YulIdentifier","src":"2572:9:24"}],"functionName":{"name":"sub","nativeSrc":"2559:3:24","nodeType":"YulIdentifier","src":"2559:3:24"},"nativeSrc":"2559:23:24","nodeType":"YulFunctionCall","src":"2559:23:24"},{"kind":"number","nativeSrc":"2584:2:24","nodeType":"YulLiteral","src":"2584:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"2555:3:24","nodeType":"YulIdentifier","src":"2555:3:24"},"nativeSrc":"2555:32:24","nodeType":"YulFunctionCall","src":"2555:32:24"},"nativeSrc":"2552:52:24","nodeType":"YulIf","src":"2552:52:24"},{"nativeSrc":"2613:36:24","nodeType":"YulVariableDeclaration","src":"2613:36:24","value":{"arguments":[{"name":"headStart","nativeSrc":"2639:9:24","nodeType":"YulIdentifier","src":"2639:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"2626:12:24","nodeType":"YulIdentifier","src":"2626:12:24"},"nativeSrc":"2626:23:24","nodeType":"YulFunctionCall","src":"2626:23:24"},"variables":[{"name":"value","nativeSrc":"2617:5:24","nodeType":"YulTypedName","src":"2617:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2713:5:24","nodeType":"YulIdentifier","src":"2713:5:24"}],"functionName":{"name":"validator_revert_contract_ITransparentUpgradeableProxy","nativeSrc":"2658:54:24","nodeType":"YulIdentifier","src":"2658:54:24"},"nativeSrc":"2658:61:24","nodeType":"YulFunctionCall","src":"2658:61:24"},"nativeSrc":"2658:61:24","nodeType":"YulExpressionStatement","src":"2658:61:24"},{"nativeSrc":"2728:15:24","nodeType":"YulAssignment","src":"2728:15:24","value":{"name":"value","nativeSrc":"2738:5:24","nodeType":"YulIdentifier","src":"2738:5:24"},"variableNames":[{"name":"value0","nativeSrc":"2728:6:24","nodeType":"YulIdentifier","src":"2728:6:24"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"2472:277:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2508:9:24","nodeType":"YulTypedName","src":"2508:9:24","type":""},{"name":"dataEnd","nativeSrc":"2519:7:24","nodeType":"YulTypedName","src":"2519:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"2531:6:24","nodeType":"YulTypedName","src":"2531:6:24","type":""}],"src":"2472:277:24"},{"body":{"nativeSrc":"2901:168:24","nodeType":"YulBlock","src":"2901:168:24","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2918:9:24","nodeType":"YulIdentifier","src":"2918:9:24"},{"arguments":[{"name":"value0","nativeSrc":"2933:6:24","nodeType":"YulIdentifier","src":"2933:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2949:3:24","nodeType":"YulLiteral","src":"2949:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"2954:1:24","nodeType":"YulLiteral","src":"2954:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2945:3:24","nodeType":"YulIdentifier","src":"2945:3:24"},"nativeSrc":"2945:11:24","nodeType":"YulFunctionCall","src":"2945:11:24"},{"kind":"number","nativeSrc":"2958:1:24","nodeType":"YulLiteral","src":"2958:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2941:3:24","nodeType":"YulIdentifier","src":"2941:3:24"},"nativeSrc":"2941:19:24","nodeType":"YulFunctionCall","src":"2941:19:24"}],"functionName":{"name":"and","nativeSrc":"2929:3:24","nodeType":"YulIdentifier","src":"2929:3:24"},"nativeSrc":"2929:32:24","nodeType":"YulFunctionCall","src":"2929:32:24"}],"functionName":{"name":"mstore","nativeSrc":"2911:6:24","nodeType":"YulIdentifier","src":"2911:6:24"},"nativeSrc":"2911:51:24","nodeType":"YulFunctionCall","src":"2911:51:24"},"nativeSrc":"2911:51:24","nodeType":"YulExpressionStatement","src":"2911:51:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2982:9:24","nodeType":"YulIdentifier","src":"2982:9:24"},{"kind":"number","nativeSrc":"2993:2:24","nodeType":"YulLiteral","src":"2993:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2978:3:24","nodeType":"YulIdentifier","src":"2978:3:24"},"nativeSrc":"2978:18:24","nodeType":"YulFunctionCall","src":"2978:18:24"},{"kind":"number","nativeSrc":"2998:2:24","nodeType":"YulLiteral","src":"2998:2:24","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"2971:6:24","nodeType":"YulIdentifier","src":"2971:6:24"},"nativeSrc":"2971:30:24","nodeType":"YulFunctionCall","src":"2971:30:24"},"nativeSrc":"2971:30:24","nodeType":"YulExpressionStatement","src":"2971:30:24"},{"nativeSrc":"3010:53:24","nodeType":"YulAssignment","src":"3010:53:24","value":{"arguments":[{"name":"value1","nativeSrc":"3036:6:24","nodeType":"YulIdentifier","src":"3036:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"3048:9:24","nodeType":"YulIdentifier","src":"3048:9:24"},{"kind":"number","nativeSrc":"3059:2:24","nodeType":"YulLiteral","src":"3059:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3044:3:24","nodeType":"YulIdentifier","src":"3044:3:24"},"nativeSrc":"3044:18:24","nodeType":"YulFunctionCall","src":"3044:18:24"}],"functionName":{"name":"abi_encode_string","nativeSrc":"3018:17:24","nodeType":"YulIdentifier","src":"3018:17:24"},"nativeSrc":"3018:45:24","nodeType":"YulFunctionCall","src":"3018:45:24"},"variableNames":[{"name":"tail","nativeSrc":"3010:4:24","nodeType":"YulIdentifier","src":"3010:4:24"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nativeSrc":"2754:315:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"2862:9:24","nodeType":"YulTypedName","src":"2862:9:24","type":""},{"name":"value1","nativeSrc":"2873:6:24","nodeType":"YulTypedName","src":"2873:6:24","type":""},{"name":"value0","nativeSrc":"2881:6:24","nodeType":"YulTypedName","src":"2881:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2892:4:24","nodeType":"YulTypedName","src":"2892:4:24","type":""}],"src":"2754:315:24"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function validator_revert_contract_ITransparentUpgradeableProxy(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_contract$_ITransparentUpgradeableProxy_$1205t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_contract_ITransparentUpgradeableProxy(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_contract_ITransparentUpgradeableProxy(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_1)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_1, 32), length)\n        mstore(add(add(memPtr, length), 32), 0)\n        value2 := memPtr\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(pos, i), 0x20), mload(add(add(value, i), 0x20)))\n        }\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_contract_ITransparentUpgradeableProxy(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_string(value1, add(headStart, 64))\n    }\n}","id":24,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a9190610396565b3480156100f057600080fd5b506100646100ff3660046103b0565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103cd565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff8111156102be57600080fd5b8401601f810186136102cf57600080fd5b803567ffffffffffffffff8111156102e9576102e961025c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103185761031861025c565b60405281815282820160200188101561033057600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156103765760208185018101518683018201520161035a565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a96020830184610350565b9392505050565b6000602082840312156103c257600080fd5b81356103a981610247565b6001600160a01b03831681526040602082018190526000906103f190830184610350565b94935050505056fea26469706673582212200ab660e4866fa7d104c2d56d6c7e80fcc5bee8c6d8783e1cb220fcfe8ec1870c64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x9623609D EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xA6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0x104 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0xA1 CALLDATASIZE PUSH1 0x4 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8A SWAP2 SWAP1 PUSH2 0x396 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0xFF CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x187 JUMP JUMPDEST PUSH2 0x10C PUSH2 0x1CA JUMP JUMPDEST PUSH2 0x116 PUSH1 0x0 PUSH2 0x1F7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x4F1EF286 SWAP1 CALLVALUE SWAP1 PUSH2 0x150 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3CD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x18F PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1BE JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C7 DUP2 PUSH2 0x1F7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x116 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x1B5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x292 DUP2 PUSH2 0x247 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A2 DUP2 PUSH2 0x247 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 ADD PUSH1 0x1F DUP2 ADD DUP7 SGT PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E9 JUMPI PUSH2 0x2E9 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x318 JUMPI PUSH2 0x318 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x376 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x35A JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3A9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x350 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3A9 DUP2 PUSH2 0x247 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3F1 SWAP1 DUP4 ADD DUP5 PUSH2 0x350 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xB6 PUSH1 0xE4 DUP7 PUSH16 0xA7D104C2D56D6C7E80FCC5BEE8C6D878 RETURNDATACOPY SHR 0xB2 KECCAK256 0xFC INVALID DUP15 0xC1 DUP8 0xC PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"502:1462:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2293:101:3;;;;;;;;;;;;;:::i;:::-;;1638:85;;;;;;;;;;-1:-1:-1;1684:7:3;1710:6;1638:85;;-1:-1:-1;;;;;1710:6:3;;;160:51:24;;148:2;133:18;1638:85:3;;;;;;;;1717:245:10;;;;;;:::i;:::-;;:::i;1187:58::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1187:58:10;;;;;;;;;;;;:::i;2543:215:3:-;;;;;;;;;;-1:-1:-1;2543:215:3;;;;;:::i;:::-;;:::i;2293:101::-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1717:245:10:-;1531:13:3;:11;:13::i;:::-;1893:62:10::1;::::0;-1:-1:-1;;;1893:62:10;;-1:-1:-1;;;;;1893:22:10;::::1;::::0;::::1;::::0;1923:9:::1;::::0;1893:62:::1;::::0;1934:14;;1950:4;;1893:62:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;1717:245:::0;;;:::o;2543:215:3:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:3;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:3;;2700:1:::1;2672:31;::::0;::::1;160:51:24::0;133:18;;2672:31:3::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1796:162::-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:3;735:10:16;1855:23:3;1851:101;;1901:40;;-1:-1:-1;;;1901:40:3;;735:10:16;1901:40:3;;;160:51:24;133:18;;1901:40:3;14:203:24;2912:187:3;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:3;;;-1:-1:-1;;;;;;3020:17:3;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;222:161:24:-;-1:-1:-1;;;;;327:31:24;;317:42;;307:70;;373:1;370;363:12;388:127;449:10;444:3;440:20;437:1;430:31;480:4;477:1;470:15;504:4;501:1;494:15;520:1317;643:6;651;659;712:2;700:9;691:7;687:23;683:32;680:52;;;728:1;725;718:12;680:52;767:9;754:23;786:61;841:5;786:61;:::i;:::-;866:5;-1:-1:-1;923:2:24;908:18;;895:32;936:63;895:32;936:63;:::i;:::-;1018:7;-1:-1:-1;1076:2:24;1061:18;;1048:32;1103:18;1092:30;;1089:50;;;1135:1;1132;1125:12;1089:50;1158:22;;1211:4;1203:13;;1199:27;-1:-1:-1;1189:55:24;;1240:1;1237;1230:12;1189:55;1280:2;1267:16;1306:18;1298:6;1295:30;1292:56;;;1328:18;;:::i;:::-;1377:2;1371:9;1469:2;1431:17;;-1:-1:-1;;1427:31:24;;;1460:2;1423:40;1419:54;1407:67;;1504:18;1489:34;;1525:22;;;1486:62;1483:88;;;1551:18;;:::i;:::-;1587:2;1580:22;1611;;;1652:15;;;1669:2;1648:24;1645:37;-1:-1:-1;1642:57:24;;;1695:1;1692;1685:12;1642:57;1751:6;1746:2;1742;1738:11;1733:2;1725:6;1721:15;1708:50;1804:1;1799:2;1790:6;1782;1778:19;1774:28;1767:39;1825:6;1815:16;;;;;520:1317;;;;;:::o;1842:400::-;1884:3;1922:5;1916:12;1949:6;1944:3;1937:19;1974:1;1984:139;1998:6;1995:1;1992:13;1984:139;;;2106:4;2091:13;;;2087:24;;2081:31;2061:11;;;2057:22;;2050:63;2013:12;1984:139;;;1988:3;2168:1;2161:4;2152:6;2147:3;2143:16;2139:27;2132:38;2231:4;2224:2;2220:7;2215:2;2207:6;2203:15;2199:29;2194:3;2190:39;2186:50;2179:57;;;1842:400;;;;:::o;2247:220::-;2396:2;2385:9;2378:21;2359:4;2416:45;2457:2;2446:9;2442:18;2434:6;2416:45;:::i;:::-;2408:53;2247:220;-1:-1:-1;;;2247:220:24:o;2472:277::-;2531:6;2584:2;2572:9;2563:7;2559:23;2555:32;2552:52;;;2600:1;2597;2590:12;2552:52;2639:9;2626:23;2658:61;2713:5;2658:61;:::i;2754:315::-;-1:-1:-1;;;;;2929:32:24;;2911:51;;2998:2;2993;2978:18;;2971:30;;;-1:-1:-1;;3018:45:24;;3044:18;;3036:6;3018:45;:::i;:::-;3010:53;2754:315;-1:-1:-1;;;;2754:315:24:o"},"gasEstimates":{"creation":{"codeDepositCost":"214200","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","owner()":"2290","renounceOwnership()":"infinite","transferOwnership(address)":"infinite","upgradeAndCall(address,address,bytes)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","owner()":"8da5cb5b","renounceOwnership()":"715018a6","transferOwnership(address)":"f2fde38b","upgradeAndCall(address,address,bytes)":"9623609d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"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\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITransparentUpgradeableProxy\",\"name\":\"proxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\",\"errors\":{\"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.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Sets the initial owner who can perform upgrades.\"},\"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.\"},\"upgradeAndCall(address,address,bytes)\":{\"details\":\"Upgrades `proxy` to `implementation` and calls a function on the new implementation. See {TransparentUpgradeableProxy-_dispatchUpgradeToAndCall}. Requirements: - This contract must be the admin of `proxy`. - If `data` is empty, `msg.value` must be zero.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address,address)` and `upgradeAndCall(address,address,bytes)` are present, and `upgrade` must be used if no function should be called, while `upgradeAndCall` will invoke the `receive` function if the third argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeAndCall(address,address,bytes)` is present, and the third argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol\":\"ProxyAdmin\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.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 {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * 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 Ownable is Context {\\n    address private _owner;\\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    constructor(address initialOwner) {\\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        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        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {Proxy} from \\\"../Proxy.sol\\\";\\nimport {ERC1967Utils} from \\\"./ERC1967Utils.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy {\\n    /**\\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\\n     *\\n     * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\\n     * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    constructor(address implementation, bytes memory _data) payable {\\n        ERC1967Utils.upgradeToAndCall(implementation, _data);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return ERC1967Utils.getImplementation();\\n    }\\n}\\n\",\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This library provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\\n */\\nlibrary ERC1967Utils {\\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\\n     * function and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n}\\n\",\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"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/proxy/transparent/ProxyAdmin.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/ProxyAdmin.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {ITransparentUpgradeableProxy} from \\\"./TransparentUpgradeableProxy.sol\\\";\\nimport {Ownable} from \\\"../../access/Ownable.sol\\\";\\n\\n/**\\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\\n */\\ncontract ProxyAdmin is Ownable {\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address,address)`\\n     * and `upgradeAndCall(address,address,bytes)` are present, and `upgrade` must be used if no function should be called,\\n     * while `upgradeAndCall` will invoke the `receive` function if the third argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeAndCall(address,address,bytes)` is present, and the third 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 Sets the initial owner who can perform upgrades.\\n     */\\n    constructor(address initialOwner) Ownable(initialOwner) {}\\n\\n    /**\\n     * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation.\\n     * See {TransparentUpgradeableProxy-_dispatchUpgradeToAndCall}.\\n     *\\n     * Requirements:\\n     *\\n     * - This contract must be the admin of `proxy`.\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    function upgradeAndCall(\\n        ITransparentUpgradeableProxy proxy,\\n        address implementation,\\n        bytes memory data\\n    ) public payable virtual onlyOwner {\\n        proxy.upgradeToAndCall{value: msg.value}(implementation, data);\\n    }\\n}\\n\",\"keccak256\":\"0x46f86003755f50eff00a7c5aaf493ae62e024142b8aec4493a313851d3c14872\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {ERC1967Utils} from \\\"../ERC1967/ERC1967Utils.sol\\\";\\nimport {ERC1967Proxy} from \\\"../ERC1967/ERC1967Proxy.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {ProxyAdmin} from \\\"./ProxyAdmin.sol\\\";\\n\\n/**\\n * @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\\n * does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\\n * mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\\n * include them in the ABI so this interface must be used to interact with it.\\n */\\ninterface ITransparentUpgradeableProxy is IERC1967 {\\n    /// @dev See {UUPSUpgradeable-upgradeToAndCall}\\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable;\\n}\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\\n * the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\\n * the proxy admin cannot fallback to the target implementation.\\n *\\n * These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\\n * dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\\n * call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\\n * allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\\n * interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\\n *\\n * NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\\n * inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\\n * mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\\n * fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\\n * implementation.\\n *\\n * NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\\n * meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\\n *\\n * IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\\n * immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\\n * overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\\n * undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\\n * is generally fine if the implementation is trusted.\\n *\\n * WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\\n * compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\\n * function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\\n * could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n    // An immutable address for the admin to avoid unnecessary SLOADs before each call\\n    // at the expense of removing the ability to change the admin once it's set.\\n    // This is acceptable if the admin is always a ProxyAdmin instance or similar contract\\n    // with its own ability to transfer the permissions to another account.\\n    address private immutable _admin;\\n\\n    /**\\n     * @dev The proxy caller is the current admin, and can't fallback to the proxy target.\\n     */\\n    error ProxyDeniedAdminAccess();\\n\\n    /**\\n     * @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\\n     * backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\\n     * {ERC1967Proxy-constructor}.\\n     */\\n    constructor(address _logic, address initialOwner, bytes memory _data) payable ERC1967Proxy(_logic, _data) {\\n        _admin = address(new ProxyAdmin(initialOwner));\\n        // Set the storage value and emit an event for ERC-1967 compatibility\\n        ERC1967Utils.changeAdmin(_proxyAdmin());\\n    }\\n\\n    /**\\n     * @dev Returns the admin of this proxy.\\n     */\\n    function _proxyAdmin() internal view virtual returns (address) {\\n        return _admin;\\n    }\\n\\n    /**\\n     * @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior.\\n     */\\n    function _fallback() internal virtual override {\\n        if (msg.sender == _proxyAdmin()) {\\n            if (msg.sig != ITransparentUpgradeableProxy.upgradeToAndCall.selector) {\\n                revert ProxyDeniedAdminAccess();\\n            } else {\\n                _dispatchUpgradeToAndCall();\\n            }\\n        } else {\\n            super._fallback();\\n        }\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\\n     *\\n     * Requirements:\\n     *\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    function _dispatchUpgradeToAndCall() private {\\n        (address newImplementation, bytes memory data) = abi.decode(msg.data[4:], (address, bytes));\\n        ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n    }\\n}\\n\",\"keccak256\":\"0x92579f452fe663595a898cbac85d80bb3868a6c9f034f19ba7fbebdfa3b65a4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":587,"contract":"@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol:ProxyAdmin","label":"_owner","offset":0,"slot":"0","type":"t_address"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"ITransparentUpgradeableProxy":{"abi":[{"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"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy} does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not include them in the ABI so this interface must be used to interact with it.","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":{"upgradeToAndCall(address,bytes)":{"details":"See {UUPSUpgradeable-upgradeToAndCall}"}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"upgradeToAndCall(address,bytes)":"4f1ef286"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy} does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not include them in the ABI so this interface must be used to interact with it.\",\"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\":{\"upgradeToAndCall(address,bytes)\":{\"details\":\"See {UUPSUpgradeable-upgradeToAndCall}\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":\"ITransparentUpgradeableProxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.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 {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * 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 Ownable is Context {\\n    address private _owner;\\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    constructor(address initialOwner) {\\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        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        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {Proxy} from \\\"../Proxy.sol\\\";\\nimport {ERC1967Utils} from \\\"./ERC1967Utils.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy {\\n    /**\\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\\n     *\\n     * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\\n     * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    constructor(address implementation, bytes memory _data) payable {\\n        ERC1967Utils.upgradeToAndCall(implementation, _data);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return ERC1967Utils.getImplementation();\\n    }\\n}\\n\",\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This library provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\\n */\\nlibrary ERC1967Utils {\\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\\n     * function and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n}\\n\",\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"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/proxy/transparent/ProxyAdmin.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/ProxyAdmin.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {ITransparentUpgradeableProxy} from \\\"./TransparentUpgradeableProxy.sol\\\";\\nimport {Ownable} from \\\"../../access/Ownable.sol\\\";\\n\\n/**\\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\\n */\\ncontract ProxyAdmin is Ownable {\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address,address)`\\n     * and `upgradeAndCall(address,address,bytes)` are present, and `upgrade` must be used if no function should be called,\\n     * while `upgradeAndCall` will invoke the `receive` function if the third argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeAndCall(address,address,bytes)` is present, and the third 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 Sets the initial owner who can perform upgrades.\\n     */\\n    constructor(address initialOwner) Ownable(initialOwner) {}\\n\\n    /**\\n     * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation.\\n     * See {TransparentUpgradeableProxy-_dispatchUpgradeToAndCall}.\\n     *\\n     * Requirements:\\n     *\\n     * - This contract must be the admin of `proxy`.\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    function upgradeAndCall(\\n        ITransparentUpgradeableProxy proxy,\\n        address implementation,\\n        bytes memory data\\n    ) public payable virtual onlyOwner {\\n        proxy.upgradeToAndCall{value: msg.value}(implementation, data);\\n    }\\n}\\n\",\"keccak256\":\"0x46f86003755f50eff00a7c5aaf493ae62e024142b8aec4493a313851d3c14872\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {ERC1967Utils} from \\\"../ERC1967/ERC1967Utils.sol\\\";\\nimport {ERC1967Proxy} from \\\"../ERC1967/ERC1967Proxy.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {ProxyAdmin} from \\\"./ProxyAdmin.sol\\\";\\n\\n/**\\n * @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\\n * does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\\n * mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\\n * include them in the ABI so this interface must be used to interact with it.\\n */\\ninterface ITransparentUpgradeableProxy is IERC1967 {\\n    /// @dev See {UUPSUpgradeable-upgradeToAndCall}\\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable;\\n}\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\\n * the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\\n * the proxy admin cannot fallback to the target implementation.\\n *\\n * These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\\n * dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\\n * call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\\n * allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\\n * interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\\n *\\n * NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\\n * inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\\n * mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\\n * fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\\n * implementation.\\n *\\n * NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\\n * meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\\n *\\n * IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\\n * immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\\n * overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\\n * undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\\n * is generally fine if the implementation is trusted.\\n *\\n * WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\\n * compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\\n * function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\\n * could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n    // An immutable address for the admin to avoid unnecessary SLOADs before each call\\n    // at the expense of removing the ability to change the admin once it's set.\\n    // This is acceptable if the admin is always a ProxyAdmin instance or similar contract\\n    // with its own ability to transfer the permissions to another account.\\n    address private immutable _admin;\\n\\n    /**\\n     * @dev The proxy caller is the current admin, and can't fallback to the proxy target.\\n     */\\n    error ProxyDeniedAdminAccess();\\n\\n    /**\\n     * @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\\n     * backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\\n     * {ERC1967Proxy-constructor}.\\n     */\\n    constructor(address _logic, address initialOwner, bytes memory _data) payable ERC1967Proxy(_logic, _data) {\\n        _admin = address(new ProxyAdmin(initialOwner));\\n        // Set the storage value and emit an event for ERC-1967 compatibility\\n        ERC1967Utils.changeAdmin(_proxyAdmin());\\n    }\\n\\n    /**\\n     * @dev Returns the admin of this proxy.\\n     */\\n    function _proxyAdmin() internal view virtual returns (address) {\\n        return _admin;\\n    }\\n\\n    /**\\n     * @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior.\\n     */\\n    function _fallback() internal virtual override {\\n        if (msg.sender == _proxyAdmin()) {\\n            if (msg.sig != ITransparentUpgradeableProxy.upgradeToAndCall.selector) {\\n                revert ProxyDeniedAdminAccess();\\n            } else {\\n                _dispatchUpgradeToAndCall();\\n            }\\n        } else {\\n            super._fallback();\\n        }\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\\n     *\\n     * Requirements:\\n     *\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    function _dispatchUpgradeToAndCall() private {\\n        (address newImplementation, bytes memory data) = abi.decode(msg.data[4:], (address, bytes));\\n        ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n    }\\n}\\n\",\"keccak256\":\"0x92579f452fe663595a898cbac85d80bb3868a6c9f034f19ba7fbebdfa3b65a4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}},"TransparentUpgradeableProxy":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"ERC1967InvalidAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"ProxyDeniedAdminAccess","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"}],"devdoc":{"details":"This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself. 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating the proxy admin cannot fallback to the target implementation. These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership. NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to fully implement transparency without decoding reverts caused by selector clashes between the proxy and the implementation. NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract. IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot is generally fine if the implementation is trusted. WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.","errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidAdmin(address)":[{"details":"The `admin` 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."}],"FailedCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"ProxyDeniedAdminAccess()":[{"details":"The proxy caller is the current admin, and can't fallback to the proxy target."}]},"events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"constructor":{"details":"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."}},"version":1},"evm":{"bytecode":{"functionDebugData":{"@_1246":{"entryPoint":null,"id":1246,"parameterSlots":3,"returnSlots":0},"@_782":{"entryPoint":null,"id":782,"parameterSlots":2,"returnSlots":0},"@_checkNonPayable_1088":{"entryPoint":594,"id":1088,"parameterSlots":0,"returnSlots":0},"@_proxyAdmin_1255":{"entryPoint":null,"id":1255,"parameterSlots":0,"returnSlots":1},"@_revert_1896":{"entryPoint":785,"id":1896,"parameterSlots":1,"returnSlots":0},"@_setAdmin_952":{"entryPoint":627,"id":952,"parameterSlots":1,"returnSlots":0},"@_setImplementation_868":{"entryPoint":348,"id":868,"parameterSlots":1,"returnSlots":0},"@changeAdmin_971":{"entryPoint":238,"id":971,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_1814":{"entryPoint":475,"id":1814,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_1984":{"entryPoint":null,"id":1984,"parameterSlots":1,"returnSlots":1},"@getAdmin_921":{"entryPoint":null,"id":921,"parameterSlots":0,"returnSlots":1},"@upgradeToAndCall_904":{"entryPoint":143,"id":904,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_1854":{"entryPoint":690,"id":1854,"parameterSlots":3,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":839,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":925,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1139,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":889,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":867,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:2475:24","nodeType":"YulBlock","src":"0:2475:24","statements":[{"nativeSrc":"6:3:24","nodeType":"YulBlock","src":"6:3:24","statements":[]},{"body":{"nativeSrc":"74:117:24","nodeType":"YulBlock","src":"74:117:24","statements":[{"nativeSrc":"84:22:24","nodeType":"YulAssignment","src":"84:22:24","value":{"arguments":[{"name":"offset","nativeSrc":"99:6:24","nodeType":"YulIdentifier","src":"99:6:24"}],"functionName":{"name":"mload","nativeSrc":"93:5:24","nodeType":"YulIdentifier","src":"93:5:24"},"nativeSrc":"93:13:24","nodeType":"YulFunctionCall","src":"93:13:24"},"variableNames":[{"name":"value","nativeSrc":"84:5:24","nodeType":"YulIdentifier","src":"84:5:24"}]},{"body":{"nativeSrc":"169:16:24","nodeType":"YulBlock","src":"169:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"178:1:24","nodeType":"YulLiteral","src":"178:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"181:1:24","nodeType":"YulLiteral","src":"181:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"171:6:24","nodeType":"YulIdentifier","src":"171:6:24"},"nativeSrc":"171:12:24","nodeType":"YulFunctionCall","src":"171:12:24"},"nativeSrc":"171:12:24","nodeType":"YulExpressionStatement","src":"171:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"128:5:24","nodeType":"YulIdentifier","src":"128:5:24"},{"arguments":[{"name":"value","nativeSrc":"139:5:24","nodeType":"YulIdentifier","src":"139:5:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"154:3:24","nodeType":"YulLiteral","src":"154:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"159:1:24","nodeType":"YulLiteral","src":"159:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"150:3:24","nodeType":"YulIdentifier","src":"150:3:24"},"nativeSrc":"150:11:24","nodeType":"YulFunctionCall","src":"150:11:24"},{"kind":"number","nativeSrc":"163:1:24","nodeType":"YulLiteral","src":"163:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"146:3:24","nodeType":"YulIdentifier","src":"146:3:24"},"nativeSrc":"146:19:24","nodeType":"YulFunctionCall","src":"146:19:24"}],"functionName":{"name":"and","nativeSrc":"135:3:24","nodeType":"YulIdentifier","src":"135:3:24"},"nativeSrc":"135:31:24","nodeType":"YulFunctionCall","src":"135:31:24"}],"functionName":{"name":"eq","nativeSrc":"125:2:24","nodeType":"YulIdentifier","src":"125:2:24"},"nativeSrc":"125:42:24","nodeType":"YulFunctionCall","src":"125:42:24"}],"functionName":{"name":"iszero","nativeSrc":"118:6:24","nodeType":"YulIdentifier","src":"118:6:24"},"nativeSrc":"118:50:24","nodeType":"YulFunctionCall","src":"118:50:24"},"nativeSrc":"115:70:24","nodeType":"YulIf","src":"115:70:24"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"14:177:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"53:6:24","nodeType":"YulTypedName","src":"53:6:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"64:5:24","nodeType":"YulTypedName","src":"64:5:24","type":""}],"src":"14:177:24"},{"body":{"nativeSrc":"228:95:24","nodeType":"YulBlock","src":"228:95:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"245:1:24","nodeType":"YulLiteral","src":"245:1:24","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"252:3:24","nodeType":"YulLiteral","src":"252:3:24","type":"","value":"224"},{"kind":"number","nativeSrc":"257:10:24","nodeType":"YulLiteral","src":"257:10:24","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"248:3:24","nodeType":"YulIdentifier","src":"248:3:24"},"nativeSrc":"248:20:24","nodeType":"YulFunctionCall","src":"248:20:24"}],"functionName":{"name":"mstore","nativeSrc":"238:6:24","nodeType":"YulIdentifier","src":"238:6:24"},"nativeSrc":"238:31:24","nodeType":"YulFunctionCall","src":"238:31:24"},"nativeSrc":"238:31:24","nodeType":"YulExpressionStatement","src":"238:31:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"285:1:24","nodeType":"YulLiteral","src":"285:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"288:4:24","nodeType":"YulLiteral","src":"288:4:24","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"278:6:24","nodeType":"YulIdentifier","src":"278:6:24"},"nativeSrc":"278:15:24","nodeType":"YulFunctionCall","src":"278:15:24"},"nativeSrc":"278:15:24","nodeType":"YulExpressionStatement","src":"278:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"309:1:24","nodeType":"YulLiteral","src":"309:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"312:4:24","nodeType":"YulLiteral","src":"312:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"302:6:24","nodeType":"YulIdentifier","src":"302:6:24"},"nativeSrc":"302:15:24","nodeType":"YulFunctionCall","src":"302:15:24"},"nativeSrc":"302:15:24","nodeType":"YulExpressionStatement","src":"302:15:24"}]},"name":"panic_error_0x41","nativeSrc":"196:127:24","nodeType":"YulFunctionDefinition","src":"196:127:24"},{"body":{"nativeSrc":"394:184:24","nodeType":"YulBlock","src":"394:184:24","statements":[{"nativeSrc":"404:10:24","nodeType":"YulVariableDeclaration","src":"404:10:24","value":{"kind":"number","nativeSrc":"413:1:24","nodeType":"YulLiteral","src":"413:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"408:1:24","nodeType":"YulTypedName","src":"408:1:24","type":""}]},{"body":{"nativeSrc":"473:63:24","nodeType":"YulBlock","src":"473:63:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"498:3:24","nodeType":"YulIdentifier","src":"498:3:24"},{"name":"i","nativeSrc":"503:1:24","nodeType":"YulIdentifier","src":"503:1:24"}],"functionName":{"name":"add","nativeSrc":"494:3:24","nodeType":"YulIdentifier","src":"494:3:24"},"nativeSrc":"494:11:24","nodeType":"YulFunctionCall","src":"494:11:24"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"517:3:24","nodeType":"YulIdentifier","src":"517:3:24"},{"name":"i","nativeSrc":"522:1:24","nodeType":"YulIdentifier","src":"522:1:24"}],"functionName":{"name":"add","nativeSrc":"513:3:24","nodeType":"YulIdentifier","src":"513:3:24"},"nativeSrc":"513:11:24","nodeType":"YulFunctionCall","src":"513:11:24"}],"functionName":{"name":"mload","nativeSrc":"507:5:24","nodeType":"YulIdentifier","src":"507:5:24"},"nativeSrc":"507:18:24","nodeType":"YulFunctionCall","src":"507:18:24"}],"functionName":{"name":"mstore","nativeSrc":"487:6:24","nodeType":"YulIdentifier","src":"487:6:24"},"nativeSrc":"487:39:24","nodeType":"YulFunctionCall","src":"487:39:24"},"nativeSrc":"487:39:24","nodeType":"YulExpressionStatement","src":"487:39:24"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"434:1:24","nodeType":"YulIdentifier","src":"434:1:24"},{"name":"length","nativeSrc":"437:6:24","nodeType":"YulIdentifier","src":"437:6:24"}],"functionName":{"name":"lt","nativeSrc":"431:2:24","nodeType":"YulIdentifier","src":"431:2:24"},"nativeSrc":"431:13:24","nodeType":"YulFunctionCall","src":"431:13:24"},"nativeSrc":"423:113:24","nodeType":"YulForLoop","post":{"nativeSrc":"445:19:24","nodeType":"YulBlock","src":"445:19:24","statements":[{"nativeSrc":"447:15:24","nodeType":"YulAssignment","src":"447:15:24","value":{"arguments":[{"name":"i","nativeSrc":"456:1:24","nodeType":"YulIdentifier","src":"456:1:24"},{"kind":"number","nativeSrc":"459:2:24","nodeType":"YulLiteral","src":"459:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"452:3:24","nodeType":"YulIdentifier","src":"452:3:24"},"nativeSrc":"452:10:24","nodeType":"YulFunctionCall","src":"452:10:24"},"variableNames":[{"name":"i","nativeSrc":"447:1:24","nodeType":"YulIdentifier","src":"447:1:24"}]}]},"pre":{"nativeSrc":"427:3:24","nodeType":"YulBlock","src":"427:3:24","statements":[]},"src":"423:113:24"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"556:3:24","nodeType":"YulIdentifier","src":"556:3:24"},{"name":"length","nativeSrc":"561:6:24","nodeType":"YulIdentifier","src":"561:6:24"}],"functionName":{"name":"add","nativeSrc":"552:3:24","nodeType":"YulIdentifier","src":"552:3:24"},"nativeSrc":"552:16:24","nodeType":"YulFunctionCall","src":"552:16:24"},{"kind":"number","nativeSrc":"570:1:24","nodeType":"YulLiteral","src":"570:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"545:6:24","nodeType":"YulIdentifier","src":"545:6:24"},"nativeSrc":"545:27:24","nodeType":"YulFunctionCall","src":"545:27:24"},"nativeSrc":"545:27:24","nodeType":"YulExpressionStatement","src":"545:27:24"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"328:250:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"372:3:24","nodeType":"YulTypedName","src":"372:3:24","type":""},{"name":"dst","nativeSrc":"377:3:24","nodeType":"YulTypedName","src":"377:3:24","type":""},{"name":"length","nativeSrc":"382:6:24","nodeType":"YulTypedName","src":"382:6:24","type":""}],"src":"328:250:24"},{"body":{"nativeSrc":"707:961:24","nodeType":"YulBlock","src":"707:961:24","statements":[{"body":{"nativeSrc":"753:16:24","nodeType":"YulBlock","src":"753:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"762:1:24","nodeType":"YulLiteral","src":"762:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"765:1:24","nodeType":"YulLiteral","src":"765:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"755:6:24","nodeType":"YulIdentifier","src":"755:6:24"},"nativeSrc":"755:12:24","nodeType":"YulFunctionCall","src":"755:12:24"},"nativeSrc":"755:12:24","nodeType":"YulExpressionStatement","src":"755:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"728:7:24","nodeType":"YulIdentifier","src":"728:7:24"},{"name":"headStart","nativeSrc":"737:9:24","nodeType":"YulIdentifier","src":"737:9:24"}],"functionName":{"name":"sub","nativeSrc":"724:3:24","nodeType":"YulIdentifier","src":"724:3:24"},"nativeSrc":"724:23:24","nodeType":"YulFunctionCall","src":"724:23:24"},{"kind":"number","nativeSrc":"749:2:24","nodeType":"YulLiteral","src":"749:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"720:3:24","nodeType":"YulIdentifier","src":"720:3:24"},"nativeSrc":"720:32:24","nodeType":"YulFunctionCall","src":"720:32:24"},"nativeSrc":"717:52:24","nodeType":"YulIf","src":"717:52:24"},{"nativeSrc":"778:50:24","nodeType":"YulAssignment","src":"778:50:24","value":{"arguments":[{"name":"headStart","nativeSrc":"818:9:24","nodeType":"YulIdentifier","src":"818:9:24"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"788:29:24","nodeType":"YulIdentifier","src":"788:29:24"},"nativeSrc":"788:40:24","nodeType":"YulFunctionCall","src":"788:40:24"},"variableNames":[{"name":"value0","nativeSrc":"778:6:24","nodeType":"YulIdentifier","src":"778:6:24"}]},{"nativeSrc":"837:59:24","nodeType":"YulAssignment","src":"837:59:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"881:9:24","nodeType":"YulIdentifier","src":"881:9:24"},{"kind":"number","nativeSrc":"892:2:24","nodeType":"YulLiteral","src":"892:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"877:3:24","nodeType":"YulIdentifier","src":"877:3:24"},"nativeSrc":"877:18:24","nodeType":"YulFunctionCall","src":"877:18:24"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"847:29:24","nodeType":"YulIdentifier","src":"847:29:24"},"nativeSrc":"847:49:24","nodeType":"YulFunctionCall","src":"847:49:24"},"variableNames":[{"name":"value1","nativeSrc":"837:6:24","nodeType":"YulIdentifier","src":"837:6:24"}]},{"nativeSrc":"905:39:24","nodeType":"YulVariableDeclaration","src":"905:39:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"929:9:24","nodeType":"YulIdentifier","src":"929:9:24"},{"kind":"number","nativeSrc":"940:2:24","nodeType":"YulLiteral","src":"940:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"925:3:24","nodeType":"YulIdentifier","src":"925:3:24"},"nativeSrc":"925:18:24","nodeType":"YulFunctionCall","src":"925:18:24"}],"functionName":{"name":"mload","nativeSrc":"919:5:24","nodeType":"YulIdentifier","src":"919:5:24"},"nativeSrc":"919:25:24","nodeType":"YulFunctionCall","src":"919:25:24"},"variables":[{"name":"offset","nativeSrc":"909:6:24","nodeType":"YulTypedName","src":"909:6:24","type":""}]},{"body":{"nativeSrc":"987:16:24","nodeType":"YulBlock","src":"987:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"996:1:24","nodeType":"YulLiteral","src":"996:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"999:1:24","nodeType":"YulLiteral","src":"999:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"989:6:24","nodeType":"YulIdentifier","src":"989:6:24"},"nativeSrc":"989:12:24","nodeType":"YulFunctionCall","src":"989:12:24"},"nativeSrc":"989:12:24","nodeType":"YulExpressionStatement","src":"989:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"959:6:24","nodeType":"YulIdentifier","src":"959:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"975:2:24","nodeType":"YulLiteral","src":"975:2:24","type":"","value":"64"},{"kind":"number","nativeSrc":"979:1:24","nodeType":"YulLiteral","src":"979:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"971:3:24","nodeType":"YulIdentifier","src":"971:3:24"},"nativeSrc":"971:10:24","nodeType":"YulFunctionCall","src":"971:10:24"},{"kind":"number","nativeSrc":"983:1:24","nodeType":"YulLiteral","src":"983:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"967:3:24","nodeType":"YulIdentifier","src":"967:3:24"},"nativeSrc":"967:18:24","nodeType":"YulFunctionCall","src":"967:18:24"}],"functionName":{"name":"gt","nativeSrc":"956:2:24","nodeType":"YulIdentifier","src":"956:2:24"},"nativeSrc":"956:30:24","nodeType":"YulFunctionCall","src":"956:30:24"},"nativeSrc":"953:50:24","nodeType":"YulIf","src":"953:50:24"},{"nativeSrc":"1012:32:24","nodeType":"YulVariableDeclaration","src":"1012:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"1026:9:24","nodeType":"YulIdentifier","src":"1026:9:24"},{"name":"offset","nativeSrc":"1037:6:24","nodeType":"YulIdentifier","src":"1037:6:24"}],"functionName":{"name":"add","nativeSrc":"1022:3:24","nodeType":"YulIdentifier","src":"1022:3:24"},"nativeSrc":"1022:22:24","nodeType":"YulFunctionCall","src":"1022:22:24"},"variables":[{"name":"_1","nativeSrc":"1016:2:24","nodeType":"YulTypedName","src":"1016:2:24","type":""}]},{"body":{"nativeSrc":"1092:16:24","nodeType":"YulBlock","src":"1092:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1101:1:24","nodeType":"YulLiteral","src":"1101:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1104:1:24","nodeType":"YulLiteral","src":"1104:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1094:6:24","nodeType":"YulIdentifier","src":"1094:6:24"},"nativeSrc":"1094:12:24","nodeType":"YulFunctionCall","src":"1094:12:24"},"nativeSrc":"1094:12:24","nodeType":"YulExpressionStatement","src":"1094:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1071:2:24","nodeType":"YulIdentifier","src":"1071:2:24"},{"kind":"number","nativeSrc":"1075:4:24","nodeType":"YulLiteral","src":"1075:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1067:3:24","nodeType":"YulIdentifier","src":"1067:3:24"},"nativeSrc":"1067:13:24","nodeType":"YulFunctionCall","src":"1067:13:24"},{"name":"dataEnd","nativeSrc":"1082:7:24","nodeType":"YulIdentifier","src":"1082:7:24"}],"functionName":{"name":"slt","nativeSrc":"1063:3:24","nodeType":"YulIdentifier","src":"1063:3:24"},"nativeSrc":"1063:27:24","nodeType":"YulFunctionCall","src":"1063:27:24"}],"functionName":{"name":"iszero","nativeSrc":"1056:6:24","nodeType":"YulIdentifier","src":"1056:6:24"},"nativeSrc":"1056:35:24","nodeType":"YulFunctionCall","src":"1056:35:24"},"nativeSrc":"1053:55:24","nodeType":"YulIf","src":"1053:55:24"},{"nativeSrc":"1117:23:24","nodeType":"YulVariableDeclaration","src":"1117:23:24","value":{"arguments":[{"name":"_1","nativeSrc":"1137:2:24","nodeType":"YulIdentifier","src":"1137:2:24"}],"functionName":{"name":"mload","nativeSrc":"1131:5:24","nodeType":"YulIdentifier","src":"1131:5:24"},"nativeSrc":"1131:9:24","nodeType":"YulFunctionCall","src":"1131:9:24"},"variables":[{"name":"length","nativeSrc":"1121:6:24","nodeType":"YulTypedName","src":"1121:6:24","type":""}]},{"body":{"nativeSrc":"1183:22:24","nodeType":"YulBlock","src":"1183:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1185:16:24","nodeType":"YulIdentifier","src":"1185:16:24"},"nativeSrc":"1185:18:24","nodeType":"YulFunctionCall","src":"1185:18:24"},"nativeSrc":"1185:18:24","nodeType":"YulExpressionStatement","src":"1185:18:24"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1155:6:24","nodeType":"YulIdentifier","src":"1155:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1171:2:24","nodeType":"YulLiteral","src":"1171:2:24","type":"","value":"64"},{"kind":"number","nativeSrc":"1175:1:24","nodeType":"YulLiteral","src":"1175:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1167:3:24","nodeType":"YulIdentifier","src":"1167:3:24"},"nativeSrc":"1167:10:24","nodeType":"YulFunctionCall","src":"1167:10:24"},{"kind":"number","nativeSrc":"1179:1:24","nodeType":"YulLiteral","src":"1179:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1163:3:24","nodeType":"YulIdentifier","src":"1163:3:24"},"nativeSrc":"1163:18:24","nodeType":"YulFunctionCall","src":"1163:18:24"}],"functionName":{"name":"gt","nativeSrc":"1152:2:24","nodeType":"YulIdentifier","src":"1152:2:24"},"nativeSrc":"1152:30:24","nodeType":"YulFunctionCall","src":"1152:30:24"},"nativeSrc":"1149:56:24","nodeType":"YulIf","src":"1149:56:24"},{"nativeSrc":"1214:23:24","nodeType":"YulVariableDeclaration","src":"1214:23:24","value":{"arguments":[{"kind":"number","nativeSrc":"1234:2:24","nodeType":"YulLiteral","src":"1234:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1228:5:24","nodeType":"YulIdentifier","src":"1228:5:24"},"nativeSrc":"1228:9:24","nodeType":"YulFunctionCall","src":"1228:9:24"},"variables":[{"name":"memPtr","nativeSrc":"1218:6:24","nodeType":"YulTypedName","src":"1218:6:24","type":""}]},{"nativeSrc":"1246:85:24","nodeType":"YulVariableDeclaration","src":"1246:85:24","value":{"arguments":[{"name":"memPtr","nativeSrc":"1268:6:24","nodeType":"YulIdentifier","src":"1268:6:24"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1292:6:24","nodeType":"YulIdentifier","src":"1292:6:24"},{"kind":"number","nativeSrc":"1300:4:24","nodeType":"YulLiteral","src":"1300:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1288:3:24","nodeType":"YulIdentifier","src":"1288:3:24"},"nativeSrc":"1288:17:24","nodeType":"YulFunctionCall","src":"1288:17:24"},{"arguments":[{"kind":"number","nativeSrc":"1311:2:24","nodeType":"YulLiteral","src":"1311:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1307:3:24","nodeType":"YulIdentifier","src":"1307:3:24"},"nativeSrc":"1307:7:24","nodeType":"YulFunctionCall","src":"1307:7:24"}],"functionName":{"name":"and","nativeSrc":"1284:3:24","nodeType":"YulIdentifier","src":"1284:3:24"},"nativeSrc":"1284:31:24","nodeType":"YulFunctionCall","src":"1284:31:24"},{"kind":"number","nativeSrc":"1317:2:24","nodeType":"YulLiteral","src":"1317:2:24","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"1280:3:24","nodeType":"YulIdentifier","src":"1280:3:24"},"nativeSrc":"1280:40:24","nodeType":"YulFunctionCall","src":"1280:40:24"},{"arguments":[{"kind":"number","nativeSrc":"1326:2:24","nodeType":"YulLiteral","src":"1326:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1322:3:24","nodeType":"YulIdentifier","src":"1322:3:24"},"nativeSrc":"1322:7:24","nodeType":"YulFunctionCall","src":"1322:7:24"}],"functionName":{"name":"and","nativeSrc":"1276:3:24","nodeType":"YulIdentifier","src":"1276:3:24"},"nativeSrc":"1276:54:24","nodeType":"YulFunctionCall","src":"1276:54:24"}],"functionName":{"name":"add","nativeSrc":"1264:3:24","nodeType":"YulIdentifier","src":"1264:3:24"},"nativeSrc":"1264:67:24","nodeType":"YulFunctionCall","src":"1264:67:24"},"variables":[{"name":"newFreePtr","nativeSrc":"1250:10:24","nodeType":"YulTypedName","src":"1250:10:24","type":""}]},{"body":{"nativeSrc":"1406:22:24","nodeType":"YulBlock","src":"1406:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1408:16:24","nodeType":"YulIdentifier","src":"1408:16:24"},"nativeSrc":"1408:18:24","nodeType":"YulFunctionCall","src":"1408:18:24"},"nativeSrc":"1408:18:24","nodeType":"YulExpressionStatement","src":"1408:18:24"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1349:10:24","nodeType":"YulIdentifier","src":"1349:10:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1369:2:24","nodeType":"YulLiteral","src":"1369:2:24","type":"","value":"64"},{"kind":"number","nativeSrc":"1373:1:24","nodeType":"YulLiteral","src":"1373:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1365:3:24","nodeType":"YulIdentifier","src":"1365:3:24"},"nativeSrc":"1365:10:24","nodeType":"YulFunctionCall","src":"1365:10:24"},{"kind":"number","nativeSrc":"1377:1:24","nodeType":"YulLiteral","src":"1377:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1361:3:24","nodeType":"YulIdentifier","src":"1361:3:24"},"nativeSrc":"1361:18:24","nodeType":"YulFunctionCall","src":"1361:18:24"}],"functionName":{"name":"gt","nativeSrc":"1346:2:24","nodeType":"YulIdentifier","src":"1346:2:24"},"nativeSrc":"1346:34:24","nodeType":"YulFunctionCall","src":"1346:34:24"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1385:10:24","nodeType":"YulIdentifier","src":"1385:10:24"},{"name":"memPtr","nativeSrc":"1397:6:24","nodeType":"YulIdentifier","src":"1397:6:24"}],"functionName":{"name":"lt","nativeSrc":"1382:2:24","nodeType":"YulIdentifier","src":"1382:2:24"},"nativeSrc":"1382:22:24","nodeType":"YulFunctionCall","src":"1382:22:24"}],"functionName":{"name":"or","nativeSrc":"1343:2:24","nodeType":"YulIdentifier","src":"1343:2:24"},"nativeSrc":"1343:62:24","nodeType":"YulFunctionCall","src":"1343:62:24"},"nativeSrc":"1340:88:24","nodeType":"YulIf","src":"1340:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1444:2:24","nodeType":"YulLiteral","src":"1444:2:24","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1448:10:24","nodeType":"YulIdentifier","src":"1448:10:24"}],"functionName":{"name":"mstore","nativeSrc":"1437:6:24","nodeType":"YulIdentifier","src":"1437:6:24"},"nativeSrc":"1437:22:24","nodeType":"YulFunctionCall","src":"1437:22:24"},"nativeSrc":"1437:22:24","nodeType":"YulExpressionStatement","src":"1437:22:24"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1475:6:24","nodeType":"YulIdentifier","src":"1475:6:24"},{"name":"length","nativeSrc":"1483:6:24","nodeType":"YulIdentifier","src":"1483:6:24"}],"functionName":{"name":"mstore","nativeSrc":"1468:6:24","nodeType":"YulIdentifier","src":"1468:6:24"},"nativeSrc":"1468:22:24","nodeType":"YulFunctionCall","src":"1468:22:24"},"nativeSrc":"1468:22:24","nodeType":"YulExpressionStatement","src":"1468:22:24"},{"body":{"nativeSrc":"1540:16:24","nodeType":"YulBlock","src":"1540:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1549:1:24","nodeType":"YulLiteral","src":"1549:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1552:1:24","nodeType":"YulLiteral","src":"1552:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1542:6:24","nodeType":"YulIdentifier","src":"1542:6:24"},"nativeSrc":"1542:12:24","nodeType":"YulFunctionCall","src":"1542:12:24"},"nativeSrc":"1542:12:24","nodeType":"YulExpressionStatement","src":"1542:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1513:2:24","nodeType":"YulIdentifier","src":"1513:2:24"},{"name":"length","nativeSrc":"1517:6:24","nodeType":"YulIdentifier","src":"1517:6:24"}],"functionName":{"name":"add","nativeSrc":"1509:3:24","nodeType":"YulIdentifier","src":"1509:3:24"},"nativeSrc":"1509:15:24","nodeType":"YulFunctionCall","src":"1509:15:24"},{"kind":"number","nativeSrc":"1526:2:24","nodeType":"YulLiteral","src":"1526:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1505:3:24","nodeType":"YulIdentifier","src":"1505:3:24"},"nativeSrc":"1505:24:24","nodeType":"YulFunctionCall","src":"1505:24:24"},{"name":"dataEnd","nativeSrc":"1531:7:24","nodeType":"YulIdentifier","src":"1531:7:24"}],"functionName":{"name":"gt","nativeSrc":"1502:2:24","nodeType":"YulIdentifier","src":"1502:2:24"},"nativeSrc":"1502:37:24","nodeType":"YulFunctionCall","src":"1502:37:24"},"nativeSrc":"1499:57:24","nodeType":"YulIf","src":"1499:57:24"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1604:2:24","nodeType":"YulIdentifier","src":"1604:2:24"},{"kind":"number","nativeSrc":"1608:2:24","nodeType":"YulLiteral","src":"1608:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1600:3:24","nodeType":"YulIdentifier","src":"1600:3:24"},"nativeSrc":"1600:11:24","nodeType":"YulFunctionCall","src":"1600:11:24"},{"arguments":[{"name":"memPtr","nativeSrc":"1617:6:24","nodeType":"YulIdentifier","src":"1617:6:24"},{"kind":"number","nativeSrc":"1625:2:24","nodeType":"YulLiteral","src":"1625:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1613:3:24","nodeType":"YulIdentifier","src":"1613:3:24"},"nativeSrc":"1613:15:24","nodeType":"YulFunctionCall","src":"1613:15:24"},{"name":"length","nativeSrc":"1630:6:24","nodeType":"YulIdentifier","src":"1630:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"1565:34:24","nodeType":"YulIdentifier","src":"1565:34:24"},"nativeSrc":"1565:72:24","nodeType":"YulFunctionCall","src":"1565:72:24"},"nativeSrc":"1565:72:24","nodeType":"YulExpressionStatement","src":"1565:72:24"},{"nativeSrc":"1646:16:24","nodeType":"YulAssignment","src":"1646:16:24","value":{"name":"memPtr","nativeSrc":"1656:6:24","nodeType":"YulIdentifier","src":"1656:6:24"},"variableNames":[{"name":"value2","nativeSrc":"1646:6:24","nodeType":"YulIdentifier","src":"1646:6:24"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory","nativeSrc":"583:1085:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"657:9:24","nodeType":"YulTypedName","src":"657:9:24","type":""},{"name":"dataEnd","nativeSrc":"668:7:24","nodeType":"YulTypedName","src":"668:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"680:6:24","nodeType":"YulTypedName","src":"680:6:24","type":""},{"name":"value1","nativeSrc":"688:6:24","nodeType":"YulTypedName","src":"688:6:24","type":""},{"name":"value2","nativeSrc":"696:6:24","nodeType":"YulTypedName","src":"696:6:24","type":""}],"src":"583:1085:24"},{"body":{"nativeSrc":"1774:102:24","nodeType":"YulBlock","src":"1774:102:24","statements":[{"nativeSrc":"1784:26:24","nodeType":"YulAssignment","src":"1784:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"1796:9:24","nodeType":"YulIdentifier","src":"1796:9:24"},{"kind":"number","nativeSrc":"1807:2:24","nodeType":"YulLiteral","src":"1807:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1792:3:24","nodeType":"YulIdentifier","src":"1792:3:24"},"nativeSrc":"1792:18:24","nodeType":"YulFunctionCall","src":"1792:18:24"},"variableNames":[{"name":"tail","nativeSrc":"1784:4:24","nodeType":"YulIdentifier","src":"1784:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1826:9:24","nodeType":"YulIdentifier","src":"1826:9:24"},{"arguments":[{"name":"value0","nativeSrc":"1841:6:24","nodeType":"YulIdentifier","src":"1841:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1857:3:24","nodeType":"YulLiteral","src":"1857:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"1862:1:24","nodeType":"YulLiteral","src":"1862:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1853:3:24","nodeType":"YulIdentifier","src":"1853:3:24"},"nativeSrc":"1853:11:24","nodeType":"YulFunctionCall","src":"1853:11:24"},{"kind":"number","nativeSrc":"1866:1:24","nodeType":"YulLiteral","src":"1866:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1849:3:24","nodeType":"YulIdentifier","src":"1849:3:24"},"nativeSrc":"1849:19:24","nodeType":"YulFunctionCall","src":"1849:19:24"}],"functionName":{"name":"and","nativeSrc":"1837:3:24","nodeType":"YulIdentifier","src":"1837:3:24"},"nativeSrc":"1837:32:24","nodeType":"YulFunctionCall","src":"1837:32:24"}],"functionName":{"name":"mstore","nativeSrc":"1819:6:24","nodeType":"YulIdentifier","src":"1819:6:24"},"nativeSrc":"1819:51:24","nodeType":"YulFunctionCall","src":"1819:51:24"},"nativeSrc":"1819:51:24","nodeType":"YulExpressionStatement","src":"1819:51:24"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1673:203:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1743:9:24","nodeType":"YulTypedName","src":"1743:9:24","type":""},{"name":"value0","nativeSrc":"1754:6:24","nodeType":"YulTypedName","src":"1754:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1765:4:24","nodeType":"YulTypedName","src":"1765:4:24","type":""}],"src":"1673:203:24"},{"body":{"nativeSrc":"2010:171:24","nodeType":"YulBlock","src":"2010:171:24","statements":[{"nativeSrc":"2020:26:24","nodeType":"YulAssignment","src":"2020:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"2032:9:24","nodeType":"YulIdentifier","src":"2032:9:24"},{"kind":"number","nativeSrc":"2043:2:24","nodeType":"YulLiteral","src":"2043:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2028:3:24","nodeType":"YulIdentifier","src":"2028:3:24"},"nativeSrc":"2028:18:24","nodeType":"YulFunctionCall","src":"2028:18:24"},"variableNames":[{"name":"tail","nativeSrc":"2020:4:24","nodeType":"YulIdentifier","src":"2020:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2062:9:24","nodeType":"YulIdentifier","src":"2062:9:24"},{"arguments":[{"name":"value0","nativeSrc":"2077:6:24","nodeType":"YulIdentifier","src":"2077:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2093:3:24","nodeType":"YulLiteral","src":"2093:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"2098:1:24","nodeType":"YulLiteral","src":"2098:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2089:3:24","nodeType":"YulIdentifier","src":"2089:3:24"},"nativeSrc":"2089:11:24","nodeType":"YulFunctionCall","src":"2089:11:24"},{"kind":"number","nativeSrc":"2102:1:24","nodeType":"YulLiteral","src":"2102:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2085:3:24","nodeType":"YulIdentifier","src":"2085:3:24"},"nativeSrc":"2085:19:24","nodeType":"YulFunctionCall","src":"2085:19:24"}],"functionName":{"name":"and","nativeSrc":"2073:3:24","nodeType":"YulIdentifier","src":"2073:3:24"},"nativeSrc":"2073:32:24","nodeType":"YulFunctionCall","src":"2073:32:24"}],"functionName":{"name":"mstore","nativeSrc":"2055:6:24","nodeType":"YulIdentifier","src":"2055:6:24"},"nativeSrc":"2055:51:24","nodeType":"YulFunctionCall","src":"2055:51:24"},"nativeSrc":"2055:51:24","nodeType":"YulExpressionStatement","src":"2055:51:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2126:9:24","nodeType":"YulIdentifier","src":"2126:9:24"},{"kind":"number","nativeSrc":"2137:2:24","nodeType":"YulLiteral","src":"2137:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2122:3:24","nodeType":"YulIdentifier","src":"2122:3:24"},"nativeSrc":"2122:18:24","nodeType":"YulFunctionCall","src":"2122:18:24"},{"arguments":[{"name":"value1","nativeSrc":"2146:6:24","nodeType":"YulIdentifier","src":"2146:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2162:3:24","nodeType":"YulLiteral","src":"2162:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"2167:1:24","nodeType":"YulLiteral","src":"2167:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2158:3:24","nodeType":"YulIdentifier","src":"2158:3:24"},"nativeSrc":"2158:11:24","nodeType":"YulFunctionCall","src":"2158:11:24"},{"kind":"number","nativeSrc":"2171:1:24","nodeType":"YulLiteral","src":"2171:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2154:3:24","nodeType":"YulIdentifier","src":"2154:3:24"},"nativeSrc":"2154:19:24","nodeType":"YulFunctionCall","src":"2154:19:24"}],"functionName":{"name":"and","nativeSrc":"2142:3:24","nodeType":"YulIdentifier","src":"2142:3:24"},"nativeSrc":"2142:32:24","nodeType":"YulFunctionCall","src":"2142:32:24"}],"functionName":{"name":"mstore","nativeSrc":"2115:6:24","nodeType":"YulIdentifier","src":"2115:6:24"},"nativeSrc":"2115:60:24","nodeType":"YulFunctionCall","src":"2115:60:24"},"nativeSrc":"2115:60:24","nodeType":"YulExpressionStatement","src":"2115:60:24"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"1881:300:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1971:9:24","nodeType":"YulTypedName","src":"1971:9:24","type":""},{"name":"value1","nativeSrc":"1982:6:24","nodeType":"YulTypedName","src":"1982:6:24","type":""},{"name":"value0","nativeSrc":"1990:6:24","nodeType":"YulTypedName","src":"1990:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2001:4:24","nodeType":"YulTypedName","src":"2001:4:24","type":""}],"src":"1881:300:24"},{"body":{"nativeSrc":"2323:150:24","nodeType":"YulBlock","src":"2323:150:24","statements":[{"nativeSrc":"2333:27:24","nodeType":"YulVariableDeclaration","src":"2333:27:24","value":{"arguments":[{"name":"value0","nativeSrc":"2353:6:24","nodeType":"YulIdentifier","src":"2353:6:24"}],"functionName":{"name":"mload","nativeSrc":"2347:5:24","nodeType":"YulIdentifier","src":"2347:5:24"},"nativeSrc":"2347:13:24","nodeType":"YulFunctionCall","src":"2347:13:24"},"variables":[{"name":"length","nativeSrc":"2337:6:24","nodeType":"YulTypedName","src":"2337:6:24","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"2408:6:24","nodeType":"YulIdentifier","src":"2408:6:24"},{"kind":"number","nativeSrc":"2416:4:24","nodeType":"YulLiteral","src":"2416:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2404:3:24","nodeType":"YulIdentifier","src":"2404:3:24"},"nativeSrc":"2404:17:24","nodeType":"YulFunctionCall","src":"2404:17:24"},{"name":"pos","nativeSrc":"2423:3:24","nodeType":"YulIdentifier","src":"2423:3:24"},{"name":"length","nativeSrc":"2428:6:24","nodeType":"YulIdentifier","src":"2428:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"2369:34:24","nodeType":"YulIdentifier","src":"2369:34:24"},"nativeSrc":"2369:66:24","nodeType":"YulFunctionCall","src":"2369:66:24"},"nativeSrc":"2369:66:24","nodeType":"YulExpressionStatement","src":"2369:66:24"},{"nativeSrc":"2444:23:24","nodeType":"YulAssignment","src":"2444:23:24","value":{"arguments":[{"name":"pos","nativeSrc":"2455:3:24","nodeType":"YulIdentifier","src":"2455:3:24"},{"name":"length","nativeSrc":"2460:6:24","nodeType":"YulIdentifier","src":"2460:6:24"}],"functionName":{"name":"add","nativeSrc":"2451:3:24","nodeType":"YulIdentifier","src":"2451:3:24"},"nativeSrc":"2451:16:24","nodeType":"YulFunctionCall","src":"2451:16:24"},"variableNames":[{"name":"end","nativeSrc":"2444:3:24","nodeType":"YulIdentifier","src":"2444:3:24"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"2186:287:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"2299:3:24","nodeType":"YulTypedName","src":"2299:3:24","type":""},{"name":"value0","nativeSrc":"2304:6:24","nodeType":"YulTypedName","src":"2304:6:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"2315:3:24","nodeType":"YulTypedName","src":"2315:3:24","type":""}],"src":"2186:287:24"}]},"contents":"{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n        let offset := mload(add(headStart, 64))\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := mload(_1)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(_1, 32), add(memPtr, 32), length)\n        value2 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n}","id":24,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a0604052604051610e84380380610e848339810160408190526100229161039d565b828161002e828261008f565b50508160405161003d9061033a565b6001600160a01b039091168152602001604051809103906000f080158015610069573d6000803e3d6000fd5b506001600160a01b031660805261008761008260805190565b6100ee565b50505061048f565b6100988261015c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100e2576100dd82826101db565b505050565b6100ea610252565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012e600080516020610e64833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015981610273565b50565b806001600160a01b03163b60000361019757604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101f89190610473565b600060405180830381855af49150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5090925090506102498583836102b2565b95945050505050565b34156102715760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029d57604051633173bdd160e11b81526000600482015260240161018e565b80600080516020610e648339815191526101ba565b6060826102c7576102c282610311565b61030a565b81511580156102de57506001600160a01b0384163b155b1561030757604051639996b31560e01b81526001600160a01b038516600482015260240161018e565b50805b9392505050565b8051156103215780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61052c8061093883390190565b80516001600160a01b038116811461035e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561039457818101518382015260200161037c565b50506000910152565b6000806000606084860312156103b257600080fd5b6103bb84610347565b92506103c960208501610347565b60408501519092506001600160401b038111156103e557600080fd5b8401601f810186136103f657600080fd5b80516001600160401b0381111561040f5761040f610363565b604051601f8201601f19908116603f011681016001600160401b038111828210171561043d5761043d610363565b60405281815282820160200188101561045557600080fd5b610466826020830160208601610379565b8093505050509250925092565b60008251610485818460208701610379565b9190910192915050565b60805161048f6104a960003960006010015261048f6000f3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007b576000356001600160e01b03191663278f794360e11b14610071576040516334ad5dbb60e21b815260040160405180910390fd5b610079610083565b565b6100796100b2565b6000806100933660048184610312565b8101906100a09190610352565b915091506100ae82826100c2565b5050565b6100796100bd61011d565b610155565b6100cb82610179565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101155761011082826101f5565b505050565b6100ae61026b565b60006101507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610174573d6000f35b3d6000fd5b806001600160a01b03163b6000036101b457604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610212919061042a565b600060405180830381855af49150503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b509150915061026285838361028a565b95945050505050565b34156100795760405163b398979f60e01b815260040160405180910390fd5b60608261029f5761029a826102e9565b6102e2565b81511580156102b657506001600160a01b0384163b155b156102df57604051639996b31560e01b81526001600160a01b03851660048201526024016101ab565b50805b9392505050565b8051156102f95780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000808585111561032257600080fd5b8386111561032f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561036557600080fd5b82356001600160a01b038116811461037c57600080fd5b9150602083013567ffffffffffffffff81111561039857600080fd5b8301601f810185136103a957600080fd5b803567ffffffffffffffff8111156103c3576103c361033c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103f2576103f261033c565b60405281815282820160200187101561040a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b8181101561044b5760208186018101518583015201610431565b50600092019182525091905056fea264697066735822122014b48661f6c587615600aefeb0014d58a1bff2713e7b741a0a3d3bd320a8ea8a64736f6c634300081c0033608060405234801561001057600080fd5b5060405161052c38038061052c83398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b61042f806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a9190610396565b3480156100f057600080fd5b506100646100ff3660046103b0565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103cd565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff8111156102be57600080fd5b8401601f810186136102cf57600080fd5b803567ffffffffffffffff8111156102e9576102e961025c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103185761031861025c565b60405281815282820160200188101561033057600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156103765760208185018101518683018201520161035a565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a96020830184610350565b9392505050565b6000602082840312156103c257600080fd5b81356103a981610247565b6001600160a01b03831681526040602082018190526000906103f190830184610350565b94935050505056fea26469706673582212200ab660e4866fa7d104c2d56d6c7e80fcc5bee8c6d8783e1cb220fcfe8ec1870c64736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0xE84 CODESIZE SUB DUP1 PUSH2 0xE84 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x39D JUMP JUMPDEST DUP3 DUP2 PUSH2 0x2E DUP3 DUP3 PUSH2 0x8F JUMP JUMPDEST POP POP DUP2 PUSH1 0x40 MLOAD PUSH2 0x3D SWAP1 PUSH2 0x33A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x69 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x87 PUSH2 0x82 PUSH1 0x80 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0xEE JUMP JUMPDEST POP POP POP PUSH2 0x48F JUMP JUMPDEST PUSH2 0x98 DUP3 PUSH2 0x15C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0xE2 JUMPI PUSH2 0xDD DUP3 DUP3 PUSH2 0x1DB JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xEA PUSH2 0x252 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x12E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xE64 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x159 DUP2 PUSH2 0x273 JUMP JUMPDEST POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x197 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x1F8 SWAP2 SWAP1 PUSH2 0x473 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x233 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x238 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x249 DUP6 DUP4 DUP4 PUSH2 0x2B2 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x29D JUMPI PUSH1 0x40 MLOAD PUSH4 0x3173BDD1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xE64 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1BA JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x2C7 JUMPI PUSH2 0x2C2 DUP3 PUSH2 0x311 JUMP JUMPDEST PUSH2 0x30A JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2DE JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x307 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x18E JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x321 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x52C DUP1 PUSH2 0x938 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x394 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37C JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BB DUP5 PUSH2 0x347 JUMP JUMPDEST SWAP3 POP PUSH2 0x3C9 PUSH1 0x20 DUP6 ADD PUSH2 0x347 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 ADD PUSH1 0x1F DUP2 ADD DUP7 SGT PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x40F JUMPI PUSH2 0x40F PUSH2 0x363 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x43D JUMPI PUSH2 0x43D PUSH2 0x363 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH2 0x455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x466 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x379 JUMP JUMPDEST DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x485 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x379 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x48F PUSH2 0x4A9 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0x10 ADD MSTORE PUSH2 0x48F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0xC PUSH2 0xE JUMP JUMPDEST STOP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x278F7943 PUSH1 0xE1 SHL EQ PUSH2 0x71 JUMPI PUSH1 0x40 MLOAD PUSH4 0x34AD5DBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x79 PUSH2 0x83 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x79 PUSH2 0xB2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x93 CALLDATASIZE PUSH1 0x4 DUP2 DUP5 PUSH2 0x312 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xA0 SWAP2 SWAP1 PUSH2 0x352 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xAE DUP3 DUP3 PUSH2 0xC2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x79 PUSH2 0xBD PUSH2 0x11D JUMP JUMPDEST PUSH2 0x155 JUMP JUMPDEST PUSH2 0xCB DUP3 PUSH2 0x179 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x115 JUMPI PUSH2 0x110 DUP3 DUP3 PUSH2 0x1F5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xAE PUSH2 0x26B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x150 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x174 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x212 SWAP2 SWAP1 PUSH2 0x42A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x24D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x252 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x262 DUP6 DUP4 DUP4 PUSH2 0x28A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x79 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x29F JUMPI PUSH2 0x29A DUP3 PUSH2 0x2E9 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2B6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x1AB JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2F9 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x37C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C3 JUMPI PUSH2 0x3C3 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3F2 JUMPI PUSH2 0x3F2 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x44B JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x431 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xB4 DUP7 PUSH2 0xF6C5 DUP8 PUSH2 0x5600 0xAE INVALID 0xB0 ADD 0x4D PC LOG1 0xBF CALLCODE PUSH18 0x3E7B741A0A3D3BD320A8EA8A64736F6C6343 STOP ADDMOD SHR STOP CALLER PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x52C CODESIZE SUB DUP1 PUSH2 0x52C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5E JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x67 DUP2 PUSH2 0x6E JUMP JUMPDEST POP POP PUSH2 0xEE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x42F DUP1 PUSH2 0xFD PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x9623609D EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xA6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0x104 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0xA1 CALLDATASIZE PUSH1 0x4 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8A SWAP2 SWAP1 PUSH2 0x396 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0xFF CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x187 JUMP JUMPDEST PUSH2 0x10C PUSH2 0x1CA JUMP JUMPDEST PUSH2 0x116 PUSH1 0x0 PUSH2 0x1F7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x4F1EF286 SWAP1 CALLVALUE SWAP1 PUSH2 0x150 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3CD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x18F PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1BE JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C7 DUP2 PUSH2 0x1F7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x116 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x1B5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x292 DUP2 PUSH2 0x247 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A2 DUP2 PUSH2 0x247 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 ADD PUSH1 0x1F DUP2 ADD DUP7 SGT PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E9 JUMPI PUSH2 0x2E9 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x318 JUMPI PUSH2 0x318 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x376 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x35A JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3A9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x350 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3A9 DUP2 PUSH2 0x247 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3F1 SWAP1 DUP4 ADD DUP5 PUSH2 0x350 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xB6 PUSH1 0xE4 DUP7 PUSH16 0xA7D104C2D56D6C7E80FCC5BEE8C6D878 RETURNDATACOPY SHR 0xB2 KECCAK256 0xFC INVALID DUP15 0xC1 DUP8 0xC PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER 0xB5 BALANCE 0x27 PUSH9 0x4A568B3173AE13B9F8 0xA6 ADD PUSH15 0x243E63B6E8EE1178D6A717850B5D61 SUB ","sourceMap":"4314:2231:11:-:0;;;5157:296;;;;;;;;;;;;;;;;;;:::i;:::-;5248:6;5256:5;1155:52:6;5248:6:11;5256:5;1155:29:6;:52::i;:::-;1081:133;;5305:12:11::1;5290:28;;;;;:::i;:::-;-1:-1:-1::0;;;;;1837:32:24;;;1819:51;;1807:2;1792:18;5290:28:11::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;5273:46:11::1;;::::0;5407:39:::1;5432:13;5600:6:::0;;;5520:93;5432:13:::1;5407:24;:39::i;:::-;5157:296:::0;;;4314:2231;;2264:344:7;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:7;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;2264:344;;:::o;2454:148::-;2573:18;:16;:18::i;:::-;2264:344;;:::o;3827:142::-;3890:43;3912:10;-1:-1:-1;;;;;;;;;;;3356:44:7;-1:-1:-1;;;;;3356:44:7;;3287:120;3912:10;3890:43;;;-1:-1:-1;;;;;2073:32:24;;;2055:51;;2142:32;;;2137:2;2122:18;;2115:60;2028:18;3890:43:7;;;;;;;3943:19;3953:8;3943:9;:19::i;:::-;3827:142;:::o;1671:281::-;1748:17;-1:-1:-1;;;;;1748:29:7;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:7;;-1:-1:-1;;;;;1837:32:24;;1805:47:7;;;1819:51:24;1792:18;;1805:47:7;;;;;;;;1744:119;1928:17;811:66;1872:47;:73;;-1:-1:-1;;;;;;1872:73:7;-1:-1:-1;;;;;1872:73:7;;;;;;;;;;-1:-1:-1;1671:281:7:o;3916:253:15:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:15;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4023:67:15;;-1:-1:-1;4023:67:15;-1:-1:-1;4107:55:15;4134:6;4023:67;;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:15:o;6113:122:7:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:7;;;;;;;;;;;6159:70;6113:122::o;3490:217::-;-1:-1:-1;;;;;3549:22:7;;3545:91;;3594:31;;-1:-1:-1;;;3594:31:7;;3622:1;3594:31;;;1819:51:24;1792:18;;3594:31:7;1673:203:24;3545:91:7;3692:8;-1:-1:-1;;;;;;;;;;;3645:38:7;1899:163:18:o;4437:582:15:-;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:15;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:15;;-1:-1:-1;;;;;1837:32:24;;4933:24:15;;;1819:51:24;1792:18;;4933:24:15;1673:203:24;4853:119:15;-1:-1:-1;4992:10:15;4605:408;4437:582;;;;;:::o;5559:487::-;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:15;;;;;;;;;;;4314:2231:11;;;;;;;;:::o;14:177:24:-;93:13;;-1:-1:-1;;;;;135:31:24;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:250;413:1;423:113;437:6;434:1;431:13;423:113;;;513:11;;;507:18;494:11;;;487:39;459:2;452:10;423:113;;;-1:-1:-1;;570:1:24;552:16;;545:27;328:250::o;583:1085::-;680:6;688;696;749:2;737:9;728:7;724:23;720:32;717:52;;;765:1;762;755:12;717:52;788:40;818:9;788:40;:::i;:::-;778:50;;847:49;892:2;881:9;877:18;847:49;:::i;:::-;940:2;925:18;;919:25;837:59;;-1:-1:-1;;;;;;956:30:24;;953:50;;;999:1;996;989:12;953:50;1022:22;;1075:4;1067:13;;1063:27;-1:-1:-1;1053:55:24;;1104:1;1101;1094:12;1053:55;1131:9;;-1:-1:-1;;;;;1152:30:24;;1149:56;;;1185:18;;:::i;:::-;1234:2;1228:9;1326:2;1288:17;;-1:-1:-1;;1284:31:24;;;1317:2;1280:40;1276:54;1264:67;;-1:-1:-1;;;;;1346:34:24;;1382:22;;;1343:62;1340:88;;;1408:18;;:::i;:::-;1444:2;1437:22;1468;;;1509:15;;;1526:2;1505:24;1502:37;-1:-1:-1;1499:57:24;;;1552:1;1549;1542:12;1499:57;1565:72;1630:6;1625:2;1617:6;1613:15;1608:2;1604;1600:11;1565:72;:::i;:::-;1656:6;1646:16;;;;;583:1085;;;;;:::o;2186:287::-;2315:3;2353:6;2347:13;2369:66;2428:6;2423:3;2416:4;2408:6;2404:17;2369:66;:::i;:::-;2451:16;;;;;2186:287;-1:-1:-1;;2186:287:24:o;:::-;4314:2231:11;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_1124":{"entryPoint":null,"id":1124,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_1088":{"entryPoint":619,"id":1088,"parameterSlots":0,"returnSlots":0},"@_delegate_1100":{"entryPoint":341,"id":1100,"parameterSlots":1,"returnSlots":0},"@_dispatchUpgradeToAndCall_1318":{"entryPoint":131,"id":1318,"parameterSlots":0,"returnSlots":0},"@_fallback_1116":{"entryPoint":178,"id":1116,"parameterSlots":0,"returnSlots":0},"@_fallback_1289":{"entryPoint":14,"id":1289,"parameterSlots":0,"returnSlots":0},"@_implementation_794":{"entryPoint":285,"id":794,"parameterSlots":0,"returnSlots":1},"@_proxyAdmin_1255":{"entryPoint":null,"id":1255,"parameterSlots":0,"returnSlots":1},"@_revert_1896":{"entryPoint":745,"id":1896,"parameterSlots":1,"returnSlots":0},"@_setImplementation_868":{"entryPoint":377,"id":868,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_1814":{"entryPoint":501,"id":1814,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_1984":{"entryPoint":null,"id":1984,"parameterSlots":1,"returnSlots":1},"@getImplementation_841":{"entryPoint":null,"id":841,"parameterSlots":0,"returnSlots":1},"@upgradeToAndCall_904":{"entryPoint":194,"id":904,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_1854":{"entryPoint":650,"id":1854,"parameterSlots":3,"returnSlots":1},"abi_decode_tuple_t_address_payablet_bytes_memory_ptr":{"entryPoint":850,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1066,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":786,"id":null,"parameterSlots":4,"returnSlots":2},"panic_error_0x41":{"entryPoint":828,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:2235:24","nodeType":"YulBlock","src":"0:2235:24","statements":[{"nativeSrc":"6:3:24","nodeType":"YulBlock","src":"6:3:24","statements":[]},{"body":{"nativeSrc":"144:201:24","nodeType":"YulBlock","src":"144:201:24","statements":[{"body":{"nativeSrc":"182:16:24","nodeType":"YulBlock","src":"182:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"191:1:24","nodeType":"YulLiteral","src":"191:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"194:1:24","nodeType":"YulLiteral","src":"194:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"184:6:24","nodeType":"YulIdentifier","src":"184:6:24"},"nativeSrc":"184:12:24","nodeType":"YulFunctionCall","src":"184:12:24"},"nativeSrc":"184:12:24","nodeType":"YulExpressionStatement","src":"184:12:24"}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"160:10:24","nodeType":"YulIdentifier","src":"160:10:24"},{"name":"endIndex","nativeSrc":"172:8:24","nodeType":"YulIdentifier","src":"172:8:24"}],"functionName":{"name":"gt","nativeSrc":"157:2:24","nodeType":"YulIdentifier","src":"157:2:24"},"nativeSrc":"157:24:24","nodeType":"YulFunctionCall","src":"157:24:24"},"nativeSrc":"154:44:24","nodeType":"YulIf","src":"154:44:24"},{"body":{"nativeSrc":"231:16:24","nodeType":"YulBlock","src":"231:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"240:1:24","nodeType":"YulLiteral","src":"240:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"243:1:24","nodeType":"YulLiteral","src":"243:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"233:6:24","nodeType":"YulIdentifier","src":"233:6:24"},"nativeSrc":"233:12:24","nodeType":"YulFunctionCall","src":"233:12:24"},"nativeSrc":"233:12:24","nodeType":"YulExpressionStatement","src":"233:12:24"}]},"condition":{"arguments":[{"name":"endIndex","nativeSrc":"213:8:24","nodeType":"YulIdentifier","src":"213:8:24"},{"name":"length","nativeSrc":"223:6:24","nodeType":"YulIdentifier","src":"223:6:24"}],"functionName":{"name":"gt","nativeSrc":"210:2:24","nodeType":"YulIdentifier","src":"210:2:24"},"nativeSrc":"210:20:24","nodeType":"YulFunctionCall","src":"210:20:24"},"nativeSrc":"207:40:24","nodeType":"YulIf","src":"207:40:24"},{"nativeSrc":"256:36:24","nodeType":"YulAssignment","src":"256:36:24","value":{"arguments":[{"name":"offset","nativeSrc":"273:6:24","nodeType":"YulIdentifier","src":"273:6:24"},{"name":"startIndex","nativeSrc":"281:10:24","nodeType":"YulIdentifier","src":"281:10:24"}],"functionName":{"name":"add","nativeSrc":"269:3:24","nodeType":"YulIdentifier","src":"269:3:24"},"nativeSrc":"269:23:24","nodeType":"YulFunctionCall","src":"269:23:24"},"variableNames":[{"name":"offsetOut","nativeSrc":"256:9:24","nodeType":"YulIdentifier","src":"256:9:24"}]},{"nativeSrc":"301:38:24","nodeType":"YulAssignment","src":"301:38:24","value":{"arguments":[{"name":"endIndex","nativeSrc":"318:8:24","nodeType":"YulIdentifier","src":"318:8:24"},{"name":"startIndex","nativeSrc":"328:10:24","nodeType":"YulIdentifier","src":"328:10:24"}],"functionName":{"name":"sub","nativeSrc":"314:3:24","nodeType":"YulIdentifier","src":"314:3:24"},"nativeSrc":"314:25:24","nodeType":"YulFunctionCall","src":"314:25:24"},"variableNames":[{"name":"lengthOut","nativeSrc":"301:9:24","nodeType":"YulIdentifier","src":"301:9:24"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nativeSrc":"14:331:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"78:6:24","nodeType":"YulTypedName","src":"78:6:24","type":""},{"name":"length","nativeSrc":"86:6:24","nodeType":"YulTypedName","src":"86:6:24","type":""},{"name":"startIndex","nativeSrc":"94:10:24","nodeType":"YulTypedName","src":"94:10:24","type":""},{"name":"endIndex","nativeSrc":"106:8:24","nodeType":"YulTypedName","src":"106:8:24","type":""}],"returnVariables":[{"name":"offsetOut","nativeSrc":"119:9:24","nodeType":"YulTypedName","src":"119:9:24","type":""},{"name":"lengthOut","nativeSrc":"130:9:24","nodeType":"YulTypedName","src":"130:9:24","type":""}],"src":"14:331:24"},{"body":{"nativeSrc":"382:95:24","nodeType":"YulBlock","src":"382:95:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"399:1:24","nodeType":"YulLiteral","src":"399:1:24","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"406:3:24","nodeType":"YulLiteral","src":"406:3:24","type":"","value":"224"},{"kind":"number","nativeSrc":"411:10:24","nodeType":"YulLiteral","src":"411:10:24","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"402:3:24","nodeType":"YulIdentifier","src":"402:3:24"},"nativeSrc":"402:20:24","nodeType":"YulFunctionCall","src":"402:20:24"}],"functionName":{"name":"mstore","nativeSrc":"392:6:24","nodeType":"YulIdentifier","src":"392:6:24"},"nativeSrc":"392:31:24","nodeType":"YulFunctionCall","src":"392:31:24"},"nativeSrc":"392:31:24","nodeType":"YulExpressionStatement","src":"392:31:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"439:1:24","nodeType":"YulLiteral","src":"439:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"442:4:24","nodeType":"YulLiteral","src":"442:4:24","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"432:6:24","nodeType":"YulIdentifier","src":"432:6:24"},"nativeSrc":"432:15:24","nodeType":"YulFunctionCall","src":"432:15:24"},"nativeSrc":"432:15:24","nodeType":"YulExpressionStatement","src":"432:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"463:1:24","nodeType":"YulLiteral","src":"463:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"466:4:24","nodeType":"YulLiteral","src":"466:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"456:6:24","nodeType":"YulIdentifier","src":"456:6:24"},"nativeSrc":"456:15:24","nodeType":"YulFunctionCall","src":"456:15:24"},"nativeSrc":"456:15:24","nodeType":"YulExpressionStatement","src":"456:15:24"}]},"name":"panic_error_0x41","nativeSrc":"350:127:24","nodeType":"YulFunctionDefinition","src":"350:127:24"},{"body":{"nativeSrc":"586:1022:24","nodeType":"YulBlock","src":"586:1022:24","statements":[{"body":{"nativeSrc":"632:16:24","nodeType":"YulBlock","src":"632:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"641:1:24","nodeType":"YulLiteral","src":"641:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"644:1:24","nodeType":"YulLiteral","src":"644:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"634:6:24","nodeType":"YulIdentifier","src":"634:6:24"},"nativeSrc":"634:12:24","nodeType":"YulFunctionCall","src":"634:12:24"},"nativeSrc":"634:12:24","nodeType":"YulExpressionStatement","src":"634:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"607:7:24","nodeType":"YulIdentifier","src":"607:7:24"},{"name":"headStart","nativeSrc":"616:9:24","nodeType":"YulIdentifier","src":"616:9:24"}],"functionName":{"name":"sub","nativeSrc":"603:3:24","nodeType":"YulIdentifier","src":"603:3:24"},"nativeSrc":"603:23:24","nodeType":"YulFunctionCall","src":"603:23:24"},{"kind":"number","nativeSrc":"628:2:24","nodeType":"YulLiteral","src":"628:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"599:3:24","nodeType":"YulIdentifier","src":"599:3:24"},"nativeSrc":"599:32:24","nodeType":"YulFunctionCall","src":"599:32:24"},"nativeSrc":"596:52:24","nodeType":"YulIf","src":"596:52:24"},{"nativeSrc":"657:36:24","nodeType":"YulVariableDeclaration","src":"657:36:24","value":{"arguments":[{"name":"headStart","nativeSrc":"683:9:24","nodeType":"YulIdentifier","src":"683:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"670:12:24","nodeType":"YulIdentifier","src":"670:12:24"},"nativeSrc":"670:23:24","nodeType":"YulFunctionCall","src":"670:23:24"},"variables":[{"name":"value","nativeSrc":"661:5:24","nodeType":"YulTypedName","src":"661:5:24","type":""}]},{"body":{"nativeSrc":"756:16:24","nodeType":"YulBlock","src":"756:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"765:1:24","nodeType":"YulLiteral","src":"765:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"768:1:24","nodeType":"YulLiteral","src":"768:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"758:6:24","nodeType":"YulIdentifier","src":"758:6:24"},"nativeSrc":"758:12:24","nodeType":"YulFunctionCall","src":"758:12:24"},"nativeSrc":"758:12:24","nodeType":"YulExpressionStatement","src":"758:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"715:5:24","nodeType":"YulIdentifier","src":"715:5:24"},{"arguments":[{"name":"value","nativeSrc":"726:5:24","nodeType":"YulIdentifier","src":"726:5:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"741:3:24","nodeType":"YulLiteral","src":"741:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"746:1:24","nodeType":"YulLiteral","src":"746:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"737:3:24","nodeType":"YulIdentifier","src":"737:3:24"},"nativeSrc":"737:11:24","nodeType":"YulFunctionCall","src":"737:11:24"},{"kind":"number","nativeSrc":"750:1:24","nodeType":"YulLiteral","src":"750:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"733:3:24","nodeType":"YulIdentifier","src":"733:3:24"},"nativeSrc":"733:19:24","nodeType":"YulFunctionCall","src":"733:19:24"}],"functionName":{"name":"and","nativeSrc":"722:3:24","nodeType":"YulIdentifier","src":"722:3:24"},"nativeSrc":"722:31:24","nodeType":"YulFunctionCall","src":"722:31:24"}],"functionName":{"name":"eq","nativeSrc":"712:2:24","nodeType":"YulIdentifier","src":"712:2:24"},"nativeSrc":"712:42:24","nodeType":"YulFunctionCall","src":"712:42:24"}],"functionName":{"name":"iszero","nativeSrc":"705:6:24","nodeType":"YulIdentifier","src":"705:6:24"},"nativeSrc":"705:50:24","nodeType":"YulFunctionCall","src":"705:50:24"},"nativeSrc":"702:70:24","nodeType":"YulIf","src":"702:70:24"},{"nativeSrc":"781:15:24","nodeType":"YulAssignment","src":"781:15:24","value":{"name":"value","nativeSrc":"791:5:24","nodeType":"YulIdentifier","src":"791:5:24"},"variableNames":[{"name":"value0","nativeSrc":"781:6:24","nodeType":"YulIdentifier","src":"781:6:24"}]},{"nativeSrc":"805:46:24","nodeType":"YulVariableDeclaration","src":"805:46:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"836:9:24","nodeType":"YulIdentifier","src":"836:9:24"},{"kind":"number","nativeSrc":"847:2:24","nodeType":"YulLiteral","src":"847:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"832:3:24","nodeType":"YulIdentifier","src":"832:3:24"},"nativeSrc":"832:18:24","nodeType":"YulFunctionCall","src":"832:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"819:12:24","nodeType":"YulIdentifier","src":"819:12:24"},"nativeSrc":"819:32:24","nodeType":"YulFunctionCall","src":"819:32:24"},"variables":[{"name":"offset","nativeSrc":"809:6:24","nodeType":"YulTypedName","src":"809:6:24","type":""}]},{"body":{"nativeSrc":"894:16:24","nodeType":"YulBlock","src":"894:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"903:1:24","nodeType":"YulLiteral","src":"903:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"906:1:24","nodeType":"YulLiteral","src":"906:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"896:6:24","nodeType":"YulIdentifier","src":"896:6:24"},"nativeSrc":"896:12:24","nodeType":"YulFunctionCall","src":"896:12:24"},"nativeSrc":"896:12:24","nodeType":"YulExpressionStatement","src":"896:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"866:6:24","nodeType":"YulIdentifier","src":"866:6:24"},{"kind":"number","nativeSrc":"874:18:24","nodeType":"YulLiteral","src":"874:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"863:2:24","nodeType":"YulIdentifier","src":"863:2:24"},"nativeSrc":"863:30:24","nodeType":"YulFunctionCall","src":"863:30:24"},"nativeSrc":"860:50:24","nodeType":"YulIf","src":"860:50:24"},{"nativeSrc":"919:32:24","nodeType":"YulVariableDeclaration","src":"919:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"933:9:24","nodeType":"YulIdentifier","src":"933:9:24"},{"name":"offset","nativeSrc":"944:6:24","nodeType":"YulIdentifier","src":"944:6:24"}],"functionName":{"name":"add","nativeSrc":"929:3:24","nodeType":"YulIdentifier","src":"929:3:24"},"nativeSrc":"929:22:24","nodeType":"YulFunctionCall","src":"929:22:24"},"variables":[{"name":"_1","nativeSrc":"923:2:24","nodeType":"YulTypedName","src":"923:2:24","type":""}]},{"body":{"nativeSrc":"999:16:24","nodeType":"YulBlock","src":"999:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1008:1:24","nodeType":"YulLiteral","src":"1008:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1011:1:24","nodeType":"YulLiteral","src":"1011:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1001:6:24","nodeType":"YulIdentifier","src":"1001:6:24"},"nativeSrc":"1001:12:24","nodeType":"YulFunctionCall","src":"1001:12:24"},"nativeSrc":"1001:12:24","nodeType":"YulExpressionStatement","src":"1001:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"978:2:24","nodeType":"YulIdentifier","src":"978:2:24"},{"kind":"number","nativeSrc":"982:4:24","nodeType":"YulLiteral","src":"982:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"974:3:24","nodeType":"YulIdentifier","src":"974:3:24"},"nativeSrc":"974:13:24","nodeType":"YulFunctionCall","src":"974:13:24"},{"name":"dataEnd","nativeSrc":"989:7:24","nodeType":"YulIdentifier","src":"989:7:24"}],"functionName":{"name":"slt","nativeSrc":"970:3:24","nodeType":"YulIdentifier","src":"970:3:24"},"nativeSrc":"970:27:24","nodeType":"YulFunctionCall","src":"970:27:24"}],"functionName":{"name":"iszero","nativeSrc":"963:6:24","nodeType":"YulIdentifier","src":"963:6:24"},"nativeSrc":"963:35:24","nodeType":"YulFunctionCall","src":"963:35:24"},"nativeSrc":"960:55:24","nodeType":"YulIf","src":"960:55:24"},{"nativeSrc":"1024:30:24","nodeType":"YulVariableDeclaration","src":"1024:30:24","value":{"arguments":[{"name":"_1","nativeSrc":"1051:2:24","nodeType":"YulIdentifier","src":"1051:2:24"}],"functionName":{"name":"calldataload","nativeSrc":"1038:12:24","nodeType":"YulIdentifier","src":"1038:12:24"},"nativeSrc":"1038:16:24","nodeType":"YulFunctionCall","src":"1038:16:24"},"variables":[{"name":"length","nativeSrc":"1028:6:24","nodeType":"YulTypedName","src":"1028:6:24","type":""}]},{"body":{"nativeSrc":"1097:22:24","nodeType":"YulBlock","src":"1097:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1099:16:24","nodeType":"YulIdentifier","src":"1099:16:24"},"nativeSrc":"1099:18:24","nodeType":"YulFunctionCall","src":"1099:18:24"},"nativeSrc":"1099:18:24","nodeType":"YulExpressionStatement","src":"1099:18:24"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1069:6:24","nodeType":"YulIdentifier","src":"1069:6:24"},{"kind":"number","nativeSrc":"1077:18:24","nodeType":"YulLiteral","src":"1077:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1066:2:24","nodeType":"YulIdentifier","src":"1066:2:24"},"nativeSrc":"1066:30:24","nodeType":"YulFunctionCall","src":"1066:30:24"},"nativeSrc":"1063:56:24","nodeType":"YulIf","src":"1063:56:24"},{"nativeSrc":"1128:23:24","nodeType":"YulVariableDeclaration","src":"1128:23:24","value":{"arguments":[{"kind":"number","nativeSrc":"1148:2:24","nodeType":"YulLiteral","src":"1148:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1142:5:24","nodeType":"YulIdentifier","src":"1142:5:24"},"nativeSrc":"1142:9:24","nodeType":"YulFunctionCall","src":"1142:9:24"},"variables":[{"name":"memPtr","nativeSrc":"1132:6:24","nodeType":"YulTypedName","src":"1132:6:24","type":""}]},{"nativeSrc":"1160:85:24","nodeType":"YulVariableDeclaration","src":"1160:85:24","value":{"arguments":[{"name":"memPtr","nativeSrc":"1182:6:24","nodeType":"YulIdentifier","src":"1182:6:24"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1206:6:24","nodeType":"YulIdentifier","src":"1206:6:24"},{"kind":"number","nativeSrc":"1214:4:24","nodeType":"YulLiteral","src":"1214:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1202:3:24","nodeType":"YulIdentifier","src":"1202:3:24"},"nativeSrc":"1202:17:24","nodeType":"YulFunctionCall","src":"1202:17:24"},{"arguments":[{"kind":"number","nativeSrc":"1225:2:24","nodeType":"YulLiteral","src":"1225:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1221:3:24","nodeType":"YulIdentifier","src":"1221:3:24"},"nativeSrc":"1221:7:24","nodeType":"YulFunctionCall","src":"1221:7:24"}],"functionName":{"name":"and","nativeSrc":"1198:3:24","nodeType":"YulIdentifier","src":"1198:3:24"},"nativeSrc":"1198:31:24","nodeType":"YulFunctionCall","src":"1198:31:24"},{"kind":"number","nativeSrc":"1231:2:24","nodeType":"YulLiteral","src":"1231:2:24","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"1194:3:24","nodeType":"YulIdentifier","src":"1194:3:24"},"nativeSrc":"1194:40:24","nodeType":"YulFunctionCall","src":"1194:40:24"},{"arguments":[{"kind":"number","nativeSrc":"1240:2:24","nodeType":"YulLiteral","src":"1240:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1236:3:24","nodeType":"YulIdentifier","src":"1236:3:24"},"nativeSrc":"1236:7:24","nodeType":"YulFunctionCall","src":"1236:7:24"}],"functionName":{"name":"and","nativeSrc":"1190:3:24","nodeType":"YulIdentifier","src":"1190:3:24"},"nativeSrc":"1190:54:24","nodeType":"YulFunctionCall","src":"1190:54:24"}],"functionName":{"name":"add","nativeSrc":"1178:3:24","nodeType":"YulIdentifier","src":"1178:3:24"},"nativeSrc":"1178:67:24","nodeType":"YulFunctionCall","src":"1178:67:24"},"variables":[{"name":"newFreePtr","nativeSrc":"1164:10:24","nodeType":"YulTypedName","src":"1164:10:24","type":""}]},{"body":{"nativeSrc":"1320:22:24","nodeType":"YulBlock","src":"1320:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1322:16:24","nodeType":"YulIdentifier","src":"1322:16:24"},"nativeSrc":"1322:18:24","nodeType":"YulFunctionCall","src":"1322:18:24"},"nativeSrc":"1322:18:24","nodeType":"YulExpressionStatement","src":"1322:18:24"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1263:10:24","nodeType":"YulIdentifier","src":"1263:10:24"},{"kind":"number","nativeSrc":"1275:18:24","nodeType":"YulLiteral","src":"1275:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1260:2:24","nodeType":"YulIdentifier","src":"1260:2:24"},"nativeSrc":"1260:34:24","nodeType":"YulFunctionCall","src":"1260:34:24"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1299:10:24","nodeType":"YulIdentifier","src":"1299:10:24"},{"name":"memPtr","nativeSrc":"1311:6:24","nodeType":"YulIdentifier","src":"1311:6:24"}],"functionName":{"name":"lt","nativeSrc":"1296:2:24","nodeType":"YulIdentifier","src":"1296:2:24"},"nativeSrc":"1296:22:24","nodeType":"YulFunctionCall","src":"1296:22:24"}],"functionName":{"name":"or","nativeSrc":"1257:2:24","nodeType":"YulIdentifier","src":"1257:2:24"},"nativeSrc":"1257:62:24","nodeType":"YulFunctionCall","src":"1257:62:24"},"nativeSrc":"1254:88:24","nodeType":"YulIf","src":"1254:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1358:2:24","nodeType":"YulLiteral","src":"1358:2:24","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1362:10:24","nodeType":"YulIdentifier","src":"1362:10:24"}],"functionName":{"name":"mstore","nativeSrc":"1351:6:24","nodeType":"YulIdentifier","src":"1351:6:24"},"nativeSrc":"1351:22:24","nodeType":"YulFunctionCall","src":"1351:22:24"},"nativeSrc":"1351:22:24","nodeType":"YulExpressionStatement","src":"1351:22:24"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1389:6:24","nodeType":"YulIdentifier","src":"1389:6:24"},{"name":"length","nativeSrc":"1397:6:24","nodeType":"YulIdentifier","src":"1397:6:24"}],"functionName":{"name":"mstore","nativeSrc":"1382:6:24","nodeType":"YulIdentifier","src":"1382:6:24"},"nativeSrc":"1382:22:24","nodeType":"YulFunctionCall","src":"1382:22:24"},"nativeSrc":"1382:22:24","nodeType":"YulExpressionStatement","src":"1382:22:24"},{"body":{"nativeSrc":"1454:16:24","nodeType":"YulBlock","src":"1454:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1463:1:24","nodeType":"YulLiteral","src":"1463:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1466:1:24","nodeType":"YulLiteral","src":"1466:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1456:6:24","nodeType":"YulIdentifier","src":"1456:6:24"},"nativeSrc":"1456:12:24","nodeType":"YulFunctionCall","src":"1456:12:24"},"nativeSrc":"1456:12:24","nodeType":"YulExpressionStatement","src":"1456:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1427:2:24","nodeType":"YulIdentifier","src":"1427:2:24"},{"name":"length","nativeSrc":"1431:6:24","nodeType":"YulIdentifier","src":"1431:6:24"}],"functionName":{"name":"add","nativeSrc":"1423:3:24","nodeType":"YulIdentifier","src":"1423:3:24"},"nativeSrc":"1423:15:24","nodeType":"YulFunctionCall","src":"1423:15:24"},{"kind":"number","nativeSrc":"1440:2:24","nodeType":"YulLiteral","src":"1440:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1419:3:24","nodeType":"YulIdentifier","src":"1419:3:24"},"nativeSrc":"1419:24:24","nodeType":"YulFunctionCall","src":"1419:24:24"},{"name":"dataEnd","nativeSrc":"1445:7:24","nodeType":"YulIdentifier","src":"1445:7:24"}],"functionName":{"name":"gt","nativeSrc":"1416:2:24","nodeType":"YulIdentifier","src":"1416:2:24"},"nativeSrc":"1416:37:24","nodeType":"YulFunctionCall","src":"1416:37:24"},"nativeSrc":"1413:57:24","nodeType":"YulIf","src":"1413:57:24"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1496:6:24","nodeType":"YulIdentifier","src":"1496:6:24"},{"kind":"number","nativeSrc":"1504:2:24","nodeType":"YulLiteral","src":"1504:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1492:3:24","nodeType":"YulIdentifier","src":"1492:3:24"},"nativeSrc":"1492:15:24","nodeType":"YulFunctionCall","src":"1492:15:24"},{"arguments":[{"name":"_1","nativeSrc":"1513:2:24","nodeType":"YulIdentifier","src":"1513:2:24"},{"kind":"number","nativeSrc":"1517:2:24","nodeType":"YulLiteral","src":"1517:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1509:3:24","nodeType":"YulIdentifier","src":"1509:3:24"},"nativeSrc":"1509:11:24","nodeType":"YulFunctionCall","src":"1509:11:24"},{"name":"length","nativeSrc":"1522:6:24","nodeType":"YulIdentifier","src":"1522:6:24"}],"functionName":{"name":"calldatacopy","nativeSrc":"1479:12:24","nodeType":"YulIdentifier","src":"1479:12:24"},"nativeSrc":"1479:50:24","nodeType":"YulFunctionCall","src":"1479:50:24"},"nativeSrc":"1479:50:24","nodeType":"YulExpressionStatement","src":"1479:50:24"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1553:6:24","nodeType":"YulIdentifier","src":"1553:6:24"},{"name":"length","nativeSrc":"1561:6:24","nodeType":"YulIdentifier","src":"1561:6:24"}],"functionName":{"name":"add","nativeSrc":"1549:3:24","nodeType":"YulIdentifier","src":"1549:3:24"},"nativeSrc":"1549:19:24","nodeType":"YulFunctionCall","src":"1549:19:24"},{"kind":"number","nativeSrc":"1570:2:24","nodeType":"YulLiteral","src":"1570:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1545:3:24","nodeType":"YulIdentifier","src":"1545:3:24"},"nativeSrc":"1545:28:24","nodeType":"YulFunctionCall","src":"1545:28:24"},{"kind":"number","nativeSrc":"1575:1:24","nodeType":"YulLiteral","src":"1575:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1538:6:24","nodeType":"YulIdentifier","src":"1538:6:24"},"nativeSrc":"1538:39:24","nodeType":"YulFunctionCall","src":"1538:39:24"},"nativeSrc":"1538:39:24","nodeType":"YulExpressionStatement","src":"1538:39:24"},{"nativeSrc":"1586:16:24","nodeType":"YulAssignment","src":"1586:16:24","value":{"name":"memPtr","nativeSrc":"1596:6:24","nodeType":"YulIdentifier","src":"1596:6:24"},"variableNames":[{"name":"value1","nativeSrc":"1586:6:24","nodeType":"YulIdentifier","src":"1586:6:24"}]}]},"name":"abi_decode_tuple_t_address_payablet_bytes_memory_ptr","nativeSrc":"482:1126:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"544:9:24","nodeType":"YulTypedName","src":"544:9:24","type":""},{"name":"dataEnd","nativeSrc":"555:7:24","nodeType":"YulTypedName","src":"555:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"567:6:24","nodeType":"YulTypedName","src":"567:6:24","type":""},{"name":"value1","nativeSrc":"575:6:24","nodeType":"YulTypedName","src":"575:6:24","type":""}],"src":"482:1126:24"},{"body":{"nativeSrc":"1714:102:24","nodeType":"YulBlock","src":"1714:102:24","statements":[{"nativeSrc":"1724:26:24","nodeType":"YulAssignment","src":"1724:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"1736:9:24","nodeType":"YulIdentifier","src":"1736:9:24"},{"kind":"number","nativeSrc":"1747:2:24","nodeType":"YulLiteral","src":"1747:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1732:3:24","nodeType":"YulIdentifier","src":"1732:3:24"},"nativeSrc":"1732:18:24","nodeType":"YulFunctionCall","src":"1732:18:24"},"variableNames":[{"name":"tail","nativeSrc":"1724:4:24","nodeType":"YulIdentifier","src":"1724:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1766:9:24","nodeType":"YulIdentifier","src":"1766:9:24"},{"arguments":[{"name":"value0","nativeSrc":"1781:6:24","nodeType":"YulIdentifier","src":"1781:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1797:3:24","nodeType":"YulLiteral","src":"1797:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"1802:1:24","nodeType":"YulLiteral","src":"1802:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1793:3:24","nodeType":"YulIdentifier","src":"1793:3:24"},"nativeSrc":"1793:11:24","nodeType":"YulFunctionCall","src":"1793:11:24"},{"kind":"number","nativeSrc":"1806:1:24","nodeType":"YulLiteral","src":"1806:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1789:3:24","nodeType":"YulIdentifier","src":"1789:3:24"},"nativeSrc":"1789:19:24","nodeType":"YulFunctionCall","src":"1789:19:24"}],"functionName":{"name":"and","nativeSrc":"1777:3:24","nodeType":"YulIdentifier","src":"1777:3:24"},"nativeSrc":"1777:32:24","nodeType":"YulFunctionCall","src":"1777:32:24"}],"functionName":{"name":"mstore","nativeSrc":"1759:6:24","nodeType":"YulIdentifier","src":"1759:6:24"},"nativeSrc":"1759:51:24","nodeType":"YulFunctionCall","src":"1759:51:24"},"nativeSrc":"1759:51:24","nodeType":"YulExpressionStatement","src":"1759:51:24"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1613:203:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1683:9:24","nodeType":"YulTypedName","src":"1683:9:24","type":""},{"name":"value0","nativeSrc":"1694:6:24","nodeType":"YulTypedName","src":"1694:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1705:4:24","nodeType":"YulTypedName","src":"1705:4:24","type":""}],"src":"1613:203:24"},{"body":{"nativeSrc":"1958:275:24","nodeType":"YulBlock","src":"1958:275:24","statements":[{"nativeSrc":"1968:27:24","nodeType":"YulVariableDeclaration","src":"1968:27:24","value":{"arguments":[{"name":"value0","nativeSrc":"1988:6:24","nodeType":"YulIdentifier","src":"1988:6:24"}],"functionName":{"name":"mload","nativeSrc":"1982:5:24","nodeType":"YulIdentifier","src":"1982:5:24"},"nativeSrc":"1982:13:24","nodeType":"YulFunctionCall","src":"1982:13:24"},"variables":[{"name":"length","nativeSrc":"1972:6:24","nodeType":"YulTypedName","src":"1972:6:24","type":""}]},{"nativeSrc":"2004:10:24","nodeType":"YulVariableDeclaration","src":"2004:10:24","value":{"kind":"number","nativeSrc":"2013:1:24","nodeType":"YulLiteral","src":"2013:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"2008:1:24","nodeType":"YulTypedName","src":"2008:1:24","type":""}]},{"body":{"nativeSrc":"2075:77:24","nodeType":"YulBlock","src":"2075:77:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2100:3:24","nodeType":"YulIdentifier","src":"2100:3:24"},{"name":"i","nativeSrc":"2105:1:24","nodeType":"YulIdentifier","src":"2105:1:24"}],"functionName":{"name":"add","nativeSrc":"2096:3:24","nodeType":"YulIdentifier","src":"2096:3:24"},"nativeSrc":"2096:11:24","nodeType":"YulFunctionCall","src":"2096:11:24"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"2123:6:24","nodeType":"YulIdentifier","src":"2123:6:24"},{"name":"i","nativeSrc":"2131:1:24","nodeType":"YulIdentifier","src":"2131:1:24"}],"functionName":{"name":"add","nativeSrc":"2119:3:24","nodeType":"YulIdentifier","src":"2119:3:24"},"nativeSrc":"2119:14:24","nodeType":"YulFunctionCall","src":"2119:14:24"},{"kind":"number","nativeSrc":"2135:4:24","nodeType":"YulLiteral","src":"2135:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2115:3:24","nodeType":"YulIdentifier","src":"2115:3:24"},"nativeSrc":"2115:25:24","nodeType":"YulFunctionCall","src":"2115:25:24"}],"functionName":{"name":"mload","nativeSrc":"2109:5:24","nodeType":"YulIdentifier","src":"2109:5:24"},"nativeSrc":"2109:32:24","nodeType":"YulFunctionCall","src":"2109:32:24"}],"functionName":{"name":"mstore","nativeSrc":"2089:6:24","nodeType":"YulIdentifier","src":"2089:6:24"},"nativeSrc":"2089:53:24","nodeType":"YulFunctionCall","src":"2089:53:24"},"nativeSrc":"2089:53:24","nodeType":"YulExpressionStatement","src":"2089:53:24"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"2034:1:24","nodeType":"YulIdentifier","src":"2034:1:24"},{"name":"length","nativeSrc":"2037:6:24","nodeType":"YulIdentifier","src":"2037:6:24"}],"functionName":{"name":"lt","nativeSrc":"2031:2:24","nodeType":"YulIdentifier","src":"2031:2:24"},"nativeSrc":"2031:13:24","nodeType":"YulFunctionCall","src":"2031:13:24"},"nativeSrc":"2023:129:24","nodeType":"YulForLoop","post":{"nativeSrc":"2045:21:24","nodeType":"YulBlock","src":"2045:21:24","statements":[{"nativeSrc":"2047:17:24","nodeType":"YulAssignment","src":"2047:17:24","value":{"arguments":[{"name":"i","nativeSrc":"2056:1:24","nodeType":"YulIdentifier","src":"2056:1:24"},{"kind":"number","nativeSrc":"2059:4:24","nodeType":"YulLiteral","src":"2059:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2052:3:24","nodeType":"YulIdentifier","src":"2052:3:24"},"nativeSrc":"2052:12:24","nodeType":"YulFunctionCall","src":"2052:12:24"},"variableNames":[{"name":"i","nativeSrc":"2047:1:24","nodeType":"YulIdentifier","src":"2047:1:24"}]}]},"pre":{"nativeSrc":"2027:3:24","nodeType":"YulBlock","src":"2027:3:24","statements":[]},"src":"2023:129:24"},{"nativeSrc":"2161:26:24","nodeType":"YulVariableDeclaration","src":"2161:26:24","value":{"arguments":[{"name":"pos","nativeSrc":"2175:3:24","nodeType":"YulIdentifier","src":"2175:3:24"},{"name":"length","nativeSrc":"2180:6:24","nodeType":"YulIdentifier","src":"2180:6:24"}],"functionName":{"name":"add","nativeSrc":"2171:3:24","nodeType":"YulIdentifier","src":"2171:3:24"},"nativeSrc":"2171:16:24","nodeType":"YulFunctionCall","src":"2171:16:24"},"variables":[{"name":"_1","nativeSrc":"2165:2:24","nodeType":"YulTypedName","src":"2165:2:24","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"2203:2:24","nodeType":"YulIdentifier","src":"2203:2:24"},{"kind":"number","nativeSrc":"2207:1:24","nodeType":"YulLiteral","src":"2207:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2196:6:24","nodeType":"YulIdentifier","src":"2196:6:24"},"nativeSrc":"2196:13:24","nodeType":"YulFunctionCall","src":"2196:13:24"},"nativeSrc":"2196:13:24","nodeType":"YulExpressionStatement","src":"2196:13:24"},{"nativeSrc":"2218:9:24","nodeType":"YulAssignment","src":"2218:9:24","value":{"name":"_1","nativeSrc":"2225:2:24","nodeType":"YulIdentifier","src":"2225:2:24"},"variableNames":[{"name":"end","nativeSrc":"2218:3:24","nodeType":"YulIdentifier","src":"2218:3:24"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"1821:412:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1934:3:24","nodeType":"YulTypedName","src":"1934:3:24","type":""},{"name":"value0","nativeSrc":"1939:6:24","nodeType":"YulTypedName","src":"1939:6:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1950:3:24","nodeType":"YulTypedName","src":"1950:3:24","type":""}],"src":"1821:412:24"}]},"contents":"{\n    { }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_address_payablet_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_1)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_1, 32), length)\n        mstore(add(add(memPtr, length), 32), 0)\n        value1 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value0, i), 0x20)))\n        }\n        let _1 := add(pos, length)\n        mstore(_1, 0)\n        end := _1\n    }\n}","id":24,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"1210":[{"length":32,"start":16}]},"linkReferences":{},"object":"608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007b576000356001600160e01b03191663278f794360e11b14610071576040516334ad5dbb60e21b815260040160405180910390fd5b610079610083565b565b6100796100b2565b6000806100933660048184610312565b8101906100a09190610352565b915091506100ae82826100c2565b5050565b6100796100bd61011d565b610155565b6100cb82610179565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101155761011082826101f5565b505050565b6100ae61026b565b60006101507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610174573d6000f35b3d6000fd5b806001600160a01b03163b6000036101b457604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610212919061042a565b600060405180830381855af49150503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b509150915061026285838361028a565b95945050505050565b34156100795760405163b398979f60e01b815260040160405180910390fd5b60608261029f5761029a826102e9565b6102e2565b81511580156102b657506001600160a01b0384163b155b156102df57604051639996b31560e01b81526001600160a01b03851660048201526024016101ab565b50805b9392505050565b8051156102f95780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000808585111561032257600080fd5b8386111561032f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561036557600080fd5b82356001600160a01b038116811461037c57600080fd5b9150602083013567ffffffffffffffff81111561039857600080fd5b8301601f810185136103a957600080fd5b803567ffffffffffffffff8111156103c3576103c361033c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103f2576103f261033c565b60405281815282820160200187101561040a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b8181101561044b5760208186018101518583015201610431565b50600092019182525091905056fea264697066735822122014b48661f6c587615600aefeb0014d58a1bff2713e7b741a0a3d3bd320a8ea8a64736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0xC PUSH2 0xE JUMP JUMPDEST STOP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x278F7943 PUSH1 0xE1 SHL EQ PUSH2 0x71 JUMPI PUSH1 0x40 MLOAD PUSH4 0x34AD5DBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x79 PUSH2 0x83 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x79 PUSH2 0xB2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x93 CALLDATASIZE PUSH1 0x4 DUP2 DUP5 PUSH2 0x312 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xA0 SWAP2 SWAP1 PUSH2 0x352 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xAE DUP3 DUP3 PUSH2 0xC2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x79 PUSH2 0xBD PUSH2 0x11D JUMP JUMPDEST PUSH2 0x155 JUMP JUMPDEST PUSH2 0xCB DUP3 PUSH2 0x179 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x115 JUMPI PUSH2 0x110 DUP3 DUP3 PUSH2 0x1F5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xAE PUSH2 0x26B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x150 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x174 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x212 SWAP2 SWAP1 PUSH2 0x42A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x24D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x252 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x262 DUP6 DUP4 DUP4 PUSH2 0x28A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x79 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x29F JUMPI PUSH2 0x29A DUP3 PUSH2 0x2E9 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2B6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x1AB JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2F9 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x37C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C3 JUMPI PUSH2 0x3C3 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3F2 JUMPI PUSH2 0x3F2 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x44B JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x431 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ 0xB4 DUP7 PUSH2 0xF6C5 DUP8 PUSH2 0x5600 0xAE INVALID 0xB0 ADD 0x4D PC LOG1 0xBF CALLCODE PUSH18 0x3E7B741A0A3D3BD320A8EA8A64736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"4314:2231:11:-:0;;;2649:11:8;:9;:11::i;:::-;4314:2231:11;5755:369;5600:6;-1:-1:-1;;;;;5816:27:11;:10;:27;5812:306;;5863:7;;-1:-1:-1;;;;;;5863:7:11;-1:-1:-1;;;5863:65:11;5859:201;;5955:24;;-1:-1:-1;;;5955:24:11;;;;;;;;;;;5859:201;6018:27;:25;:27::i;:::-;5755:369::o;5812:306::-;6090:17;:15;:17::i;6326:217::-;6382:25;;6441:12;:8;6450:1;6441:8;6382:25;6441:12;:::i;:::-;6430:42;;;;;;;:::i;:::-;6381:91;;;;6482:54;6512:17;6531:4;6482:29;:54::i;:::-;6371:172;;6326:217::o;2323:83:8:-;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;2264:344:7:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:7;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;6371:172:11;;6326:217::o;2454:148:7:-;2573:18;:16;:18::i;1583:132:6:-;1650:7;1676:32;811:66:7;1519:53;-1:-1:-1;;;;;1519:53:7;;1441:138;1676:32:6;1669:39;;1583:132;:::o;949:895:8:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27;1671:281:7;1748:17;-1:-1:-1;;;;;1748:29:7;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:7;;-1:-1:-1;;;;;1777:32:24;;1805:47:7;;;1759:51:24;1732:18;;1805:47:7;;;;;;;;1744:119;811:66;1872:73;;-1:-1:-1;;;;;;1872:73:7;-1:-1:-1;;;;;1872:73:7;;;;;;;;;;1671:281::o;3916:253:15:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:15;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:15:o;6113:122:7:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:7;;;;;;;;;;;4437:582:15;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:15;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:15;;-1:-1:-1;;;;;1777:32:24;;4933:24:15;;;1759:51:24;1732:18;;4933:24:15;1613:203:24;4853:119:15;-1:-1:-1;4992:10:15;4605:408;4437:582;;;;;:::o;5559:487::-;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:15;;;;;;;;;;;14:331:24;119:9;130;172:8;160:10;157:24;154:44;;;194:1;191;184:12;154:44;223:6;213:8;210:20;207:40;;;243:1;240;233:12;207:40;-1:-1:-1;;269:23:24;;;314:25;;;;;-1:-1:-1;14:331:24:o;350:127::-;411:10;406:3;402:20;399:1;392:31;442:4;439:1;432:15;466:4;463:1;456:15;482:1126;567:6;575;628:2;616:9;607:7;603:23;599:32;596:52;;;644:1;641;634:12;596:52;670:23;;-1:-1:-1;;;;;722:31:24;;712:42;;702:70;;768:1;765;758:12;702:70;791:5;-1:-1:-1;847:2:24;832:18;;819:32;874:18;863:30;;860:50;;;906:1;903;896:12;860:50;929:22;;982:4;974:13;;970:27;-1:-1:-1;960:55:24;;1011:1;1008;1001:12;960:55;1051:2;1038:16;1077:18;1069:6;1066:30;1063:56;;;1099:18;;:::i;:::-;1148:2;1142:9;1240:2;1202:17;;-1:-1:-1;;1198:31:24;;;1231:2;1194:40;1190:54;1178:67;;1275:18;1260:34;;1296:22;;;1257:62;1254:88;;;1322:18;;:::i;:::-;1358:2;1351:22;1382;;;1423:15;;;1440:2;1419:24;1416:37;-1:-1:-1;1413:57:24;;;1466:1;1463;1456:12;1413:57;1522:6;1517:2;1513;1509:11;1504:2;1496:6;1492:15;1479:50;1575:1;1570:2;1561:6;1553;1549:19;1545:28;1538:39;1596:6;1586:16;;;;;482:1126;;;;;:::o;1821:412::-;1950:3;1988:6;1982:13;2013:1;2023:129;2037:6;2034:1;2031:13;2023:129;;;2135:4;2119:14;;;2115:25;;2109:32;2096:11;;;2089:53;2052:12;2023:129;;;-1:-1:-1;2207:1:24;2171:16;;2196:13;;;-1:-1:-1;2171:16:24;1821:412;-1:-1:-1;1821:412:24:o"},"gasEstimates":{"creation":{"codeDepositCost":"233400","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite"},"internal":{"_dispatchUpgradeToAndCall()":"infinite","_fallback()":"infinite","_proxyAdmin()":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself. 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating the proxy admin cannot fallback to the target implementation. These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership. NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to fully implement transparency without decoding reverts caused by selector clashes between the proxy and the implementation. NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract. IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot is generally fine if the implementation is trusted. WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` 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.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"ProxyDeniedAdminAccess()\":[{\"details\":\"The proxy caller is the current admin, and can't fallback to the proxy target.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":\"TransparentUpgradeableProxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.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 {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * 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 Ownable is Context {\\n    address private _owner;\\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    constructor(address initialOwner) {\\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        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        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {Proxy} from \\\"../Proxy.sol\\\";\\nimport {ERC1967Utils} from \\\"./ERC1967Utils.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy {\\n    /**\\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\\n     *\\n     * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\\n     * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    constructor(address implementation, bytes memory _data) payable {\\n        ERC1967Utils.upgradeToAndCall(implementation, _data);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return ERC1967Utils.getImplementation();\\n    }\\n}\\n\",\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This library provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\\n */\\nlibrary ERC1967Utils {\\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\\n     * function and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n}\\n\",\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"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/proxy/transparent/ProxyAdmin.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/ProxyAdmin.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {ITransparentUpgradeableProxy} from \\\"./TransparentUpgradeableProxy.sol\\\";\\nimport {Ownable} from \\\"../../access/Ownable.sol\\\";\\n\\n/**\\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\\n */\\ncontract ProxyAdmin is Ownable {\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address,address)`\\n     * and `upgradeAndCall(address,address,bytes)` are present, and `upgrade` must be used if no function should be called,\\n     * while `upgradeAndCall` will invoke the `receive` function if the third argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeAndCall(address,address,bytes)` is present, and the third 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 Sets the initial owner who can perform upgrades.\\n     */\\n    constructor(address initialOwner) Ownable(initialOwner) {}\\n\\n    /**\\n     * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation.\\n     * See {TransparentUpgradeableProxy-_dispatchUpgradeToAndCall}.\\n     *\\n     * Requirements:\\n     *\\n     * - This contract must be the admin of `proxy`.\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    function upgradeAndCall(\\n        ITransparentUpgradeableProxy proxy,\\n        address implementation,\\n        bytes memory data\\n    ) public payable virtual onlyOwner {\\n        proxy.upgradeToAndCall{value: msg.value}(implementation, data);\\n    }\\n}\\n\",\"keccak256\":\"0x46f86003755f50eff00a7c5aaf493ae62e024142b8aec4493a313851d3c14872\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {ERC1967Utils} from \\\"../ERC1967/ERC1967Utils.sol\\\";\\nimport {ERC1967Proxy} from \\\"../ERC1967/ERC1967Proxy.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {ProxyAdmin} from \\\"./ProxyAdmin.sol\\\";\\n\\n/**\\n * @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\\n * does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\\n * mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\\n * include them in the ABI so this interface must be used to interact with it.\\n */\\ninterface ITransparentUpgradeableProxy is IERC1967 {\\n    /// @dev See {UUPSUpgradeable-upgradeToAndCall}\\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable;\\n}\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\\n * the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\\n * the proxy admin cannot fallback to the target implementation.\\n *\\n * These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\\n * dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\\n * call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\\n * allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\\n * interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\\n *\\n * NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\\n * inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\\n * mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\\n * fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\\n * implementation.\\n *\\n * NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\\n * meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\\n *\\n * IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\\n * immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\\n * overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\\n * undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\\n * is generally fine if the implementation is trusted.\\n *\\n * WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\\n * compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\\n * function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\\n * could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n    // An immutable address for the admin to avoid unnecessary SLOADs before each call\\n    // at the expense of removing the ability to change the admin once it's set.\\n    // This is acceptable if the admin is always a ProxyAdmin instance or similar contract\\n    // with its own ability to transfer the permissions to another account.\\n    address private immutable _admin;\\n\\n    /**\\n     * @dev The proxy caller is the current admin, and can't fallback to the proxy target.\\n     */\\n    error ProxyDeniedAdminAccess();\\n\\n    /**\\n     * @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\\n     * backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\\n     * {ERC1967Proxy-constructor}.\\n     */\\n    constructor(address _logic, address initialOwner, bytes memory _data) payable ERC1967Proxy(_logic, _data) {\\n        _admin = address(new ProxyAdmin(initialOwner));\\n        // Set the storage value and emit an event for ERC-1967 compatibility\\n        ERC1967Utils.changeAdmin(_proxyAdmin());\\n    }\\n\\n    /**\\n     * @dev Returns the admin of this proxy.\\n     */\\n    function _proxyAdmin() internal view virtual returns (address) {\\n        return _admin;\\n    }\\n\\n    /**\\n     * @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior.\\n     */\\n    function _fallback() internal virtual override {\\n        if (msg.sender == _proxyAdmin()) {\\n            if (msg.sig != ITransparentUpgradeableProxy.upgradeToAndCall.selector) {\\n                revert ProxyDeniedAdminAccess();\\n            } else {\\n                _dispatchUpgradeToAndCall();\\n            }\\n        } else {\\n            super._fallback();\\n        }\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\\n     *\\n     * Requirements:\\n     *\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    function _dispatchUpgradeToAndCall() private {\\n        (address newImplementation, bytes memory data) = abi.decode(msg.data[4:], (address, bytes));\\n        ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n    }\\n}\\n\",\"keccak256\":\"0x92579f452fe663595a898cbac85d80bb3868a6c9f034f19ba7fbebdfa3b65a4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC1155/IERC1155.sol":{"IERC1155":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Required interface of an ERC-1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[ERC].","events":{"ApprovalForAll(address,address,bool)":{"details":"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`."},"TransferBatch(address,address,address,uint256[],uint256[])":{"details":"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers."},"TransferSingle(address,address,address,uint256,uint256)":{"details":"Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`."},"URI(string,uint256)":{"details":"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}."}},"kind":"dev","methods":{"balanceOf(address,uint256)":{"details":"Returns the value of tokens of token type `id` owned by `account`."},"balanceOfBatch(address[],uint256[])":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length."},"isApprovedForAll(address,address)":{"details":"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}."},"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":{"details":"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. WARNING: This function can potentially allow a reentrancy attack when transferring tokens to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver. Ensure to follow the checks-effects-interactions pattern and consider employing reentrancy guards when interacting with untrusted contracts. Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments. Requirements: - `ids` and `values` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value."},"safeTransferFrom(address,address,uint256,uint256,bytes)":{"details":"Transfers a `value` amount of tokens of type `id` from `from` to `to`. WARNING: This function can potentially allow a reentrancy attack when transferring tokens to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver. Ensure to follow the checks-effects-interactions pattern and consider employing reentrancy guards when interacting with untrusted contracts. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `value` amount. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value."},"setApprovalForAll(address,bool)":{"details":"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the zero address."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"balanceOf(address,uint256)":"00fdd58e","balanceOfBatch(address[],uint256[])":"4e1273f4","isApprovedForAll(address,address)":"e985e9c5","safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)":"2eb2c2d6","safeTransferFrom(address,address,uint256,uint256,bytes)":"f242432a","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC-1155 compliant contract, as defined in the https://eips.ethereum.org/EIPS/eip-1155[ERC].\",\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"Returns the value of tokens of token type `id` owned by `account`.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. Requirements: - `accounts` and `ids` must have the same length.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns true if `operator` is approved to transfer ``account``'s tokens. See {setApprovalForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. WARNING: This function can potentially allow a reentrancy attack when transferring tokens to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver. Ensure to follow the checks-effects-interactions pattern and consider employing reentrancy guards when interacting with untrusted contracts. Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments. Requirements: - `ids` and `values` must have the same length. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the acceptance magic value.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"Transfers a `value` amount of tokens of type `id` from `from` to `to`. WARNING: This function can potentially allow a reentrancy attack when transferring tokens to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver. Ensure to follow the checks-effects-interactions pattern and consider employing reentrancy guards when interacting with untrusted contracts. Emits a {TransferSingle} event. Requirements: - `to` cannot be the zero address. - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}. - `from` must have a balance of tokens of type `id` of at least `value` amount. - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the acceptance magic value.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, Emits an {ApprovalForAll} event. Requirements: - `operator` cannot be the zero address.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":\"IERC1155\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[ERC].\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the value of tokens of token type `id` owned by `account`.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(\\n        address[] calldata accounts,\\n        uint256[] calldata ids\\n    ) external view returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the zero address.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.\\n     *\\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver.\\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\\n     * reentrancy guards when interacting with untrusted contracts.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `value` amount.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata data) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver.\\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\\n     * reentrancy guards when interacting with untrusted contracts.\\n     *\\n     * Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `values` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata values,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x1d7a05b3219532ea5ece50a80cf390cac9109dc74e07763adfa463ab5a3af0dc\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"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 ERC-20 standard as defined in the ERC.","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.28+commit.7893614a\"},\"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 ERC-20 standard as defined in the ERC.\",\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\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\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Required interface of an ERC-721 compliant contract.","events":{"Approval(address,address,uint256)":{"details":"Emitted when `owner` enables `approved` to manage the `tokenId` token."},"ApprovalForAll(address,address,bool)":{"details":"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"Transfer(address,address,uint256)":{"details":"Emitted when `tokenId` token is transferred from `from` to `to`."}},"kind":"dev","methods":{"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. 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":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC-721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"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"}],"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)."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032abaa8d7f9526098c687a0eb3385187e3092d2f49acaf84971fc5d33e5af8fc64736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN 0xAB 0xAA DUP14 PUSH32 0x9526098C687A0EB3385187E3092D2F49ACAF84971FC5D33E5AF8FC64736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ","sourceMap":"233:5815:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;233:5815:15;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032abaa8d7f9526098c687a0eb3385187e3092d2f49acaf84971fc5d33e5af8fc64736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN 0xAB 0xAA DUP14 PUSH32 0x9526098C687A0EB3385187E3092D2F49ACAF84971FC5D33E5AF8FC64736F6C63 NUMBER STOP ADDMOD SHR STOP CALLER ","sourceMap":"233:5815:15:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"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.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"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).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"devdoc":{"details":"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/Errors.sol":{"Errors":{"abi":[{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"FailedDeployment","type":"error"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"MissingPrecompile","type":"error"}],"devdoc":{"details":"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._","errors":{"FailedCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"FailedDeployment()":[{"details":"The deployment failed."}],"InsufficientBalance(uint256,uint256)":[{"details":"The ETH balance of the account is not enough to perform the operation."}],"MissingPrecompile(address)":[{"details":"A necessary precompile is missing."}]},"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220259c4ceb6c173d6d4c4529438df318e4897f957e032daec1447fd0731f0fefd164736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 SWAP13 0x4C 0xEB PUSH13 0x173D6D4C4529438DF318E4897F SWAP6 PUSH31 0x32DAEC1447FD0731F0FEFD164736F6C634300081C00330000000000000000 ","sourceMap":"411:484:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;411:484:17;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220259c4ceb6c173d6d4c4529438df318e4897f957e032daec1447fd0731f0fefd164736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x25 SWAP13 0x4C 0xEB PUSH13 0x173D6D4C4529438DF318E4897F SWAP6 PUSH31 0x32DAEC1447FD0731F0FEFD164736F6C634300081C00330000000000000000 ","sourceMap":"411:484:17:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"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 ERC-1967 implementation slot: ```solidity contract ERC1967 {     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.     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;     } } ``` TIP: Consider using this library along with {SlotDerivation}.","kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dff66893ddc142b9d665aaff4e4b6f8fc32de1de1024d2f2e2f2d73d2c6bab664736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TSTORE SELFDESTRUCT PUSH7 0x893DDC142B9D66 GAS 0xAF DELEGATECALL 0xE4 0xB6 0xF8 0xFC ORIGIN 0xDE SAR 0xE1 MUL 0x4D 0x2F 0x2E 0x2F 0x2D PUSH20 0xD2C6BAB664736F6C634300081C00330000000000 ","sourceMap":"1407:2774:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1407:2774:18;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dff66893ddc142b9d665aaff4e4b6f8fc32de1de1024d2f2e2f2d73d2c6bab664736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TSTORE SELFDESTRUCT PUSH7 0x893DDC142B9D66 GAS 0xAF DELEGATECALL 0xE4 0xB6 0xF8 0xFC ORIGIN 0xDE SAR 0xE1 MUL 0x4D 0x2F 0x2E 0x2F 0x2D PUSH20 0xD2C6BAB664736F6C634300081C00330000000000 ","sourceMap":"1407:2774:18:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"getAddressSlot(bytes32)":"infinite","getBooleanSlot(bytes32)":"infinite","getBytes32Slot(bytes32)":"infinite","getBytesSlot(bytes storage pointer)":"infinite","getBytesSlot(bytes32)":"infinite","getInt256Slot(bytes32)":"infinite","getStringSlot(bytes32)":"infinite","getStringSlot(string storage pointer)":"infinite","getUint256Slot(bytes32)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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 ERC-1967 implementation slot: ```solidity contract ERC1967 {     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.     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;     } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.","kind":"dev","methods":{"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/VideoPayment.sol":{"VideoPayment":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"ContractPaused","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InsufficientPayment","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidContent","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NoValidPermission","type":"error"},{"inputs":[],"name":"NotAdmin","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[],"name":"UnsupportedToken","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchNativePurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"paymentToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"ContentConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"address","name":"paymentToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"viewCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"validUntil","type":"uint256"}],"name":"ContentPurchased","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":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"address","name":"nftContract","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NFTPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"NativePriceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"viewCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"validUntil","type":"uint256"}],"name":"NativePurchased","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"PermissionExpired","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"SupportedTokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"SupportedTokenRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"TokenPriceUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"remainingViews","type":"uint256"}],"name":"ViewConsumed","type":"event"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"addSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"}],"name":"batchConsumeView","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"batchPurchase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"}],"name":"batchPurchaseWithNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"uint256[]","name":"nativePrices","type":"uint256[]"},{"internalType":"uint256[]","name":"defaultViewCounts","type":"uint256[]"},{"internalType":"uint256[]","name":"viewDurations","type":"uint256[]"},{"internalType":"bool[]","name":"isActiveArray","type":"bool[]"}],"name":"batchSetContentConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"uint256[]","name":"prices","type":"uint256[]"}],"name":"batchUpdateNativePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256[]","name":"prices","type":"uint256[]"}],"name":"batchUpdateTokenPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"consumeView","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"getPermissionDetails","outputs":[{"components":[{"internalType":"uint256","name":"purchaseTime","type":"uint256"},{"internalType":"uint256","name":"remainingViews","type":"uint256"},{"internalType":"bool","name":"isValid","type":"bool"}],"internalType":"struct VideoPaymentStorage.ViewPermission","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"}],"name":"getUserPermissions","outputs":[{"components":[{"internalType":"uint256","name":"purchaseTime","type":"uint256"},{"internalType":"uint256","name":"remainingViews","type":"uint256"},{"internalType":"bool","name":"isValid","type":"bool"}],"internalType":"struct VideoPaymentStorage.ViewPermission[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"hasViewPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"address[]","name":"initialAdmins","type":"address[]"},{"internalType":"address[]","name":"supportedTokenAddresses","type":"address[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"isContentActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"isSupportedToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"purchaseContent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"purchaseWithNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"purchaseWithNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"removeSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"uint256","name":"nativePrice","type":"uint256"},{"internalType":"uint256","name":"defaultViewCount","type":"uint256"},{"internalType":"uint256","name":"viewDuration","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"}],"name":"setContentConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"updateNativePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"updateTokenPrice","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":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Main contract for video content payment and access control","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."}],"FailedCall()":[{"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."}],"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":{"Initialized(uint64)":{"details":"Triggered when the contract has been initialized or reinitialized."}},"kind":"dev","methods":{"addAdmin(address)":{"details":"Add admin","params":{"admin":"Admin address to add"}},"addSupportedToken(address)":{"details":"Add supported token","params":{"token":"Token address to add"}},"batchConsumeView(address[],uint256[])":{"details":"Batch consume views for multiple users","params":{"contentIds":"Content ID array","users":"User address array"},"returns":{"_0":"Success status array"}},"batchPurchase(uint256[],address,uint256)":{"details":"Batch purchase content with ERC20 token","params":{"contentIds":"Content ID array","paymentToken":"Payment token address","totalAmount":"Total payment amount"}},"batchPurchaseWithNative(uint256[])":{"details":"Batch purchase content with native coin","params":{"contentIds":"Content ID array"}},"batchSetContentConfig(uint256[],uint256[],uint256[],uint256[],bool[])":{"details":"Batch set content configurations","params":{"contentIds":"Content ID array","defaultViewCounts":"Default view count array","isActiveArray":"Active status array","nativePrices":"Native price array","viewDurations":"View duration array"}},"batchUpdateNativePrice(uint256[],uint256[])":{"details":"Batch update native coin prices for multiple contents","params":{"contentIds":"Content ID array","prices":"Price array"}},"batchUpdateTokenPrice(uint256[],address,uint256[])":{"details":"Batch update token prices for multiple contents","params":{"contentIds":"Content ID array","prices":"Price array","token":"Token address"}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"consumeView(address,uint256)":{"details":"Consume one view for user","params":{"contentId":"Content ID","user":"User address"},"returns":{"_0":"Success status"}},"getPermissionDetails(address,uint256)":{"details":"Get detailed permission info","params":{"contentId":"Content ID","user":"User address"},"returns":{"_0":"Permission details"}},"getUserPermissions(address,uint256[])":{"details":"Get user permissions for multiple contents","params":{"contentIds":"Content ID array","user":"User address"},"returns":{"_0":"Permission array"}},"hasViewPermission(address,uint256)":{"details":"Check if user has valid view permission","params":{"contentId":"Content ID","user":"User address"},"returns":{"_0":"Whether user has valid permission"}},"initialize(address,address[],address[])":{"details":"Initialize the contract","params":{"initialAdmins":"Initial admin addresses array","initialOwner":"Initial owner address","supportedTokenAddresses":"Initial supported token addresses array"}},"isContentActive(uint256)":{"details":"Check if content is active","params":{"contentId":"Content ID"},"returns":{"_0":"Whether content is active"}},"isSupportedToken(address)":{"details":"Check if token is supported","params":{"token":"Token address to check"},"returns":{"_0":"Whether token is supported"}},"migrate()":{"details":"Migration function for future upgrades"},"pause()":{"details":"Pause contract"},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {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."},"purchaseContent(uint256,address,uint256)":{"details":"Purchase content with ERC20 token","params":{"amount":"Payment amount","contentId":"Content ID","paymentToken":"Payment token address"}},"purchaseWithNFT(uint256,address,uint256)":{"details":"Purchase content with NFT","params":{"contentId":"Content ID","nftContract":"NFT contract address","tokenId":"NFT token ID"}},"purchaseWithNative(uint256)":{"details":"Purchase content with native coin","params":{"contentId":"Content ID"}},"removeAdmin(address)":{"details":"Remove admin","params":{"admin":"Admin address to remove"}},"removeSupportedToken(address)":{"details":"Remove supported token","params":{"token":"Token address to remove"}},"setContentConfig(uint256,uint256,uint256,uint256,bool)":{"details":"Set content configuration","params":{"contentId":"Content ID","defaultViewCount":"Default view count","isActive":"Whether content is active","nativePrice":"Native coin price","viewDuration":"View duration in seconds"}},"unpause()":{"details":"Unpause contract"},"updateNativePrice(uint256,uint256)":{"details":"Update native coin price for content","params":{"contentId":"Content ID","price":"New price"}},"updateTokenPrice(uint256,address,uint256)":{"details":"Update token price for content","params":{"contentId":"Content ID","price":"New price","token":"Token address"}},"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()":{"details":"Get contract version"}},"title":"VideoPayment","version":1},"evm":{"bytecode":{"functionDebugData":{"@_2172":{"entryPoint":null,"id":2172,"parameterSlots":0,"returnSlots":0},"@_disableInitializers_221":{"entryPoint":34,"id":221,"parameterSlots":0,"returnSlots":0},"@_getInitializableStorage_266":{"entryPoint":null,"id":266,"parameterSlots":0,"returnSlots":1},"@_initializableStorageSlot_252":{"entryPoint":null,"id":252,"parameterSlots":0,"returnSlots":1},"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nativeSrc":"0:216:24","nodeType":"YulBlock","src":"0:216:24","statements":[{"nativeSrc":"6:3:24","nodeType":"YulBlock","src":"6:3:24","statements":[]},{"body":{"nativeSrc":"113:101:24","nodeType":"YulBlock","src":"113:101:24","statements":[{"nativeSrc":"123:26:24","nodeType":"YulAssignment","src":"123:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"135:9:24","nodeType":"YulIdentifier","src":"135:9:24"},{"kind":"number","nativeSrc":"146:2:24","nodeType":"YulLiteral","src":"146:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"131:3:24","nodeType":"YulIdentifier","src":"131:3:24"},"nativeSrc":"131:18:24","nodeType":"YulFunctionCall","src":"131:18:24"},"variableNames":[{"name":"tail","nativeSrc":"123:4:24","nodeType":"YulIdentifier","src":"123:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"165:9:24","nodeType":"YulIdentifier","src":"165:9:24"},{"arguments":[{"name":"value0","nativeSrc":"180:6:24","nodeType":"YulIdentifier","src":"180:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"196:2:24","nodeType":"YulLiteral","src":"196:2:24","type":"","value":"64"},{"kind":"number","nativeSrc":"200:1:24","nodeType":"YulLiteral","src":"200:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"192:3:24","nodeType":"YulIdentifier","src":"192:3:24"},"nativeSrc":"192:10:24","nodeType":"YulFunctionCall","src":"192:10:24"},{"kind":"number","nativeSrc":"204:1:24","nodeType":"YulLiteral","src":"204:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"188:3:24","nodeType":"YulIdentifier","src":"188:3:24"},"nativeSrc":"188:18:24","nodeType":"YulFunctionCall","src":"188:18:24"}],"functionName":{"name":"and","nativeSrc":"176:3:24","nodeType":"YulIdentifier","src":"176:3:24"},"nativeSrc":"176:31:24","nodeType":"YulFunctionCall","src":"176:31:24"}],"functionName":{"name":"mstore","nativeSrc":"158:6:24","nodeType":"YulIdentifier","src":"158:6:24"},"nativeSrc":"158:50:24","nodeType":"YulFunctionCall","src":"158:50:24"},"nativeSrc":"158:50:24","nodeType":"YulExpressionStatement","src":"158:50:24"}]},"name":"abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed","nativeSrc":"14:200:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"82:9:24","nodeType":"YulTypedName","src":"82:9:24","type":""},{"name":"value0","nativeSrc":"93:6:24","nodeType":"YulTypedName","src":"93:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"104:4:24","nodeType":"YulTypedName","src":"104:4:24","type":""}],"src":"14:200:24"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n}","id":24,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a06040523060805234801561001457600080fd5b5061001d610022565b6100d4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d15780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161316e6100fd600039600081816123fd01528181612426015261258f015261316e6000f3fe6080604052600436106101cd5760003560e01c806376319190116100f757806399ea24fe11610095578063b6f1d14011610064578063b6f1d14014610557578063c3c12e6914610577578063caae24b31461058a578063f1aa52f4146105aa57600080fd5b806399ea24fe146104ac578063ad3cb1cc146104cc578063b1b105fe1461050a578063b303f53f1461052a57600080fd5b806386778641116100d1578063867786411461042a5780638d13660e1461044a5780638f0ff11b146104775780638fd3ab801461049757600080fd5b806376319190146103d5578063773f2054146103f55780638456cb591461041557600080fd5b806340033b3d1161016f57806352d1902d1161013e57806352d1902d1461035d57806354fd4d50146103805780636d69fcaf1461039557806370480275146103b557600080fd5b806340033b3d146102ca5780634a200fa5146102fd5780634f1ef2861461031d578063529e2b321461033057600080fd5b806321f06438116101ab57806321f0643814610249578063240028e81461025c5780633428cebb146102955780633f4ba83a146102b557600080fd5b806305059571146101d257806309b952be146102075780631785f53c14610229575b600080fd5b3480156101de57600080fd5b506101f26101ed366004612801565b6105ca565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b50610227610222366004612978565b610749565b005b34801561023557600080fd5b50610227610244366004612a5f565b610979565b610227610257366004612a7c565b610a14565b34801561026857600080fd5b506101f2610277366004612a5f565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156102a157600080fd5b506102276102b0366004612ab8565b610ba3565b3480156102c157600080fd5b50610227610c58565b3480156102d657600080fd5b506101f26102e5366004612af0565b60009081526002602052604090206004015460ff1690565b34801561030957600080fd5b50610227610318366004612b70565b610cb8565b61022761032b366004612be9565b610fee565b34801561033c57600080fd5b5061035061034b366004612c94565b61100d565b6040516101fe9190612cfb565b34801561036957600080fd5b5061037261131a565b6040519081526020016101fe565b34801561038c57600080fd5b50600654610372565b3480156103a157600080fd5b506102276103b0366004612a5f565b611337565b3480156103c157600080fd5b506102276103d0366004612a5f565b6113da565b3480156103e157600080fd5b506102276103f0366004612a5f565b61147b565b34801561040157600080fd5b50610227610410366004612d40565b61151b565b34801561042157600080fd5b5061022761159f565b34801561043657600080fd5b50610227610445366004612ab8565b611602565b34801561045657600080fd5b5061046a610465366004612801565b6117c7565b6040516101fe9190612d62565b34801561048357600080fd5b50610227610492366004612d85565b611840565b3480156104a357600080fd5b506102276119bc565b3480156104b857600080fd5b506102276104c7366004612df4565b611a14565b3480156104d857600080fd5b506104fd604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101fe9190612e60565b34801561051657600080fd5b50610227610525366004612e93565b611c69565b34801561053657600080fd5b5061054a610545366004612ee0565b611cfc565b6040516101fe9190612f19565b34801561056357600080fd5b50610227610572366004612ab8565b611e17565b610227610585366004612af0565b612012565b34801561059657600080fd5b506101f26105a5366004612801565b61213b565b3480156105b657600080fd5b506102276105c5366004612f72565b6121d2565b3360009081526001602052604081205460ff166105fa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03831660009081526003602090815260408083208584529091529020600281015460ff16158061063357506001810154155b156106515760405163fcd7a1b560e01b815260040160405180910390fd5b600083815260026020526040902060030154815461066f9190612fbd565b42111561068f5760405163fcd7a1b560e01b815260040160405180910390fd5b6001810180549060006106a183612fd0565b919050555082846001600160a01b03167f2ccc6c74b339e9d58b89aa6bb58d0519712aeff106f7981d466f54572cb88b4283600101546040516106e691815260200190565b60405180910390a3806001015460000361073d5760028101805460ff1916905560405183906001600160a01b038616907f294e395c96ee31e4373f6b284b107e5341ffa80f2c53e582bc3cfb1f9efe500e90600090a35b60019150505b92915050565b3360009081526001602052604090205460ff1661077957604051637bfa4b9f60e01b815260040160405180910390fd5b8351855114158061078c57508251855114155b8061079957508151855114155b806107a657508051855114155b156107c45760405163512509d360e11b815260040160405180910390fd5b60005b8551811015610971578481815181106107e2576107e2612fe7565b60200260200101516000600201600088848151811061080357610803612fe7565b602002602001015181526020019081526020016000206001018190555083818151811061083257610832612fe7565b60200260200101516000600201600088848151811061085357610853612fe7565b602002602001015181526020019081526020016000206002018190555082818151811061088257610882612fe7565b6020026020010151600060020160008884815181106108a3576108a3612fe7565b60200260200101518152602001908152602001600020600301819055508181815181106108d2576108d2612fe7565b6020026020010151600060020160008884815181106108f3576108f3612fe7565b6020026020010151815260200190815260200160002060040160006101000a81548160ff02191690831515021790555085818151811061093557610935612fe7565b60200260200101517fa7c3f5f04f0c05ad82fcdf81039da5a01bf41ce2769b7b347afa43bb65e4426660405160405180910390a26001016107c7565b505050505050565b6000546001600160a01b031633146109a4576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b0381166109cb5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9190a250565b610a1c6122f4565b60055460ff1615610a405760405163ab35696f60e01b815260040160405180910390fd5b6000805b8251811015610aec5760006002016000848381518110610a6657610a66612fe7565b60209081029190910181015182528101919091526040016000206004015460ff16610aa45760405163ab4142cf60e01b815260040160405180910390fd5b60006002016000848381518110610abd57610abd612fe7565b602002602001015181526020019081526020016000206001015482610ae29190612fbd565b9150600101610a44565b50803414610b0d5760405163cd1c886760e01b815260040160405180910390fd5b60005b8251811015610b4457610b3c33848381518110610b2f57610b2f612fe7565b602002602001015161232c565b600101610b10565b50336001600160a01b03167faec2d14270982470108e2c88fecca013dba6caf4edb3c8c7ac6d9db8b26cb89f8334604051610b80929190613039565b60405180910390a250610ba0600160008051602061311983398151915255565b50565b3360009081526001602052604090205460ff16610bd357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b038216610bfa5760405163d92e233d60e01b815260040160405180910390fd5b60008381526002602090815260408083206001600160a01b038616808552908352928190208490555183815285917f376716bd86293ff8b34061b9af3cac5116f15e0f2cbf689d822b6d6d7b1eeca9910160405180910390a3505050565b6000546001600160a01b03163314610c83576040516330cd747160e01b815260040160405180910390fd5b6005805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6000610cc26123af565b805490915060ff600160401b82041615906001600160401b0316600081158015610ce95750825b90506000826001600160401b03166001148015610d055750303b155b905081158015610d13575080155b15610d315760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d5b57845460ff60401b1916600160401b1785555b6001600160a01b038816610d825760405163d92e233d60e01b815260040160405180910390fd5b610d8a6123d8565b610d926123e2565b600080546001600160a01b0319166001600160a01b038a1617815560016006556005805460ff191690555b8751811015610eab5760006001600160a01b0316888281518110610de357610de3612fe7565b60200260200101516001600160a01b031614610ea3576001600060010160008a8481518110610e1457610e14612fe7565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550878181518110610e6557610e65612fe7565b60200260200101516001600160a01b03167f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33960405160405180910390a25b600101610dbd565b5060005b8651811015610f9d5760006001600160a01b0316878281518110610ed557610ed5612fe7565b60200260200101516001600160a01b031614610f9557600160006004016000898481518110610f0657610f06612fe7565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550868181518110610f5757610f57612fe7565b60200260200101516001600160a01b03167fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d760405160405180910390a25b600101610eaf565b508315610fe457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b610ff66123f2565b610fff82612497565b61100982826124c2565b5050565b3360009081526001602052604090205460609060ff1661104057604051637bfa4b9f60e01b815260040160405180910390fd5b81518351146110625760405163512509d360e11b815260040160405180910390fd5b600083516001600160401b0381111561107d5761107d61282d565b6040519080825280602002602001820160405280156110a6578160200160208202803683370190505b50905060005b84518110156113125760008060030160008784815181106110cf576110cf612fe7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600086848151811061110b5761110b612fe7565b6020026020010151815260200190815260200160002090508060020160009054906101000a900460ff16158061114357506001810154155b1561117257600083838151811061115c5761115c612fe7565b911515602092830291909101909101525061130a565b6000600201600086848151811061118b5761118b612fe7565b602002602001015181526020019081526020016000206003015481600001546111b49190612fbd565b4211156111cf57600083838151811061115c5761115c612fe7565b6001810180549060006111e183612fd0565b91905055508482815181106111f8576111f8612fe7565b602002602001015186838151811061121257611212612fe7565b60200260200101516001600160a01b03167f2ccc6c74b339e9d58b89aa6bb58d0519712aeff106f7981d466f54572cb88b42836001015460405161125891815260200190565b60405180910390a380600101546000036112e45760028101805460ff19169055845185908390811061128c5761128c612fe7565b60200260200101518683815181106112a6576112a6612fe7565b60200260200101516001600160a01b03167f294e395c96ee31e4373f6b284b107e5341ffa80f2c53e582bc3cfb1f9efe500e60405160405180910390a35b60018383815181106112f8576112f8612fe7565b91151560209283029190910190910152505b6001016110ac565b509392505050565b6000611324612584565b506000805160206130f983398151915290565b3360009081526001602052604090205460ff1661136757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03811661138e5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d79190a250565b6000546001600160a01b03163314611405576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b03811661142c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399190a250565b3360009081526001602052604090205460ff166114ab57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0381166114d25760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038116600081815260046020526040808220805460ff19169055517fbea12876694c4055c71f74308f752b9027cf3d554194000a366abddfc239a3069190a250565b3360009081526001602052604090205460ff1661154b57604051637bfa4b9f60e01b815260040160405180910390fd5b600082815260026020526040908190206001018290555182907f40175eba104d8383c936ec96a9da297986b13a86e5b2a19296171b11533e59ce906115939084815260200190565b60405180910390a25050565b6000546001600160a01b031633146115ca576040516330cd747160e01b815260040160405180910390fd5b6005805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b61160a6122f4565b60055460ff161561162e5760405163ab35696f60e01b815260040160405180910390fd5b600083815260026020526040902060040154839060ff166116625760405163ab4142cf60e01b815260040160405180910390fd5b6040516331a9108f60e11b81526004810183905233906001600160a01b03851690636352211e90602401602060405180830381865afa1580156116a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cd919061305b565b6001600160a01b0316146116f45760405163fcd7a1b560e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd90606401600060405180830381600087803b15801561174257600080fd5b505af1158015611756573d6000803e3d6000fd5b50505050611764338561232c565b604080516001600160a01b038516815260208101849052859133917fd0de3e759b6d8ae4ab8dfd56f0869b691034bf2f14b896155287e5cd61d66a70910160405180910390a3506117c2600160008051602061311983398151915255565b505050565b6117ed604051806060016040528060008152602001600081526020016000151581525090565b506001600160a01b03821660009081526003602090815260408083208484528252918290208251606081018452815481526001820154928101929092526002015460ff1615159181019190915292915050565b3360009081526001602052604090205460ff1661187057604051637bfa4b9f60e01b815260040160405180910390fd5b80518351146118925760405163512509d360e11b815260040160405180910390fd5b6001600160a01b0382166118b95760405163d92e233d60e01b815260040160405180910390fd5b60005b83518110156119b6578181815181106118d7576118d7612fe7565b6020026020010151600060020160008684815181106118f8576118f8612fe7565b602002602001015181526020019081526020016000206000016000856001600160a01b03166001600160a01b0316815260200190815260200160002081905550826001600160a01b031684828151811061195457611954612fe7565b60200260200101517f376716bd86293ff8b34061b9af3cac5116f15e0f2cbf689d822b6d6d7b1eeca984848151811061198f5761198f612fe7565b60200260200101516040516119a691815260200190565b60405180910390a36001016118bc565b50505050565b6000546001600160a01b031633146119e7576040516330cd747160e01b815260040160405180910390fd5b60405130907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2565b611a1c6122f4565b60055460ff1615611a405760405163ab35696f60e01b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff16611a795760405163350b944160e11b815260040160405180910390fd5b6000805b8451811015611b485760006002016000868381518110611a9f57611a9f612fe7565b60209081029190910181015182528101919091526040016000206004015460ff16611add5760405163ab4142cf60e01b815260040160405180910390fd5b60006002016000868381518110611af657611af6612fe7565b602002602001015181526020019081526020016000206000016000856001600160a01b03166001600160a01b031681526020019081526020016000205482611b3e9190612fbd565b9150600101611a7d565b50808214611b695760405163cd1c886760e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd906064016020604051808303816000875af1158015611bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be09190613078565b5060005b8451811015611c0b57611c0333868381518110610b2f57610b2f612fe7565b600101611be4565b50336001600160a01b03167f2be07a645f06bfa8b189b4f0aba9bf2109d098d03cbede0449641495bba5d53d858585604051611c4993929190613095565b60405180910390a2506117c2600160008051602061311983398151915255565b3360009081526001602052604090205460ff16611c9957604051637bfa4b9f60e01b815260040160405180910390fd5b600085815260026020819052604080832060018101889055918201869055600382018590556004909101805460ff19168415151790555186917fa7c3f5f04f0c05ad82fcdf81039da5a01bf41ce2769b7b347afa43bb65e4426691a25050505050565b6060600082516001600160401b03811115611d1957611d1961282d565b604051908082528060200260200182016040528015611d7057816020015b611d5d604051806060016040528060008152602001600081526020016000151581525090565b815260200190600190039081611d375790505b50905060005b8351811015611312576001600160a01b03851660009081526003602052604081208551909190869084908110611dae57611dae612fe7565b60209081029190910181015182528181019290925260409081016000208151606081018352815481526001820154938101939093526002015460ff161515908201528251839083908110611e0457611e04612fe7565b6020908102919091010152600101611d76565b611e1f6122f4565b60055460ff1615611e435760405163ab35696f60e01b815260040160405180910390fd5b600083815260026020526040902060040154839060ff16611e775760405163ab4142cf60e01b815260040160405180910390fd5b6001600160a01b03831660009081526004602052604090205460ff16611eb05760405163350b944160e11b815260040160405180910390fd5b60008481526002602090815260408083206001600160a01b03871684529091529020548214611ef25760405163cd1c886760e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd906064016020604051808303816000875af1158015611f45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f699190613078565b50611f74338561232c565b600084815260026020526040812060030154611f909042612fbd565b6000868152600260208181526040928390209091015482516001600160a01b038916815291820187905281830152606081018390529051919250869133917f180fe4b156a592a405cdd866f58883063db683348215e97cf864d6bf9679261c919081900360800190a350506117c2600160008051602061311983398151915255565b61201a6122f4565b60055460ff161561203e5760405163ab35696f60e01b815260040160405180910390fd5b600081815260026020526040902060040154819060ff166120725760405163ab4142cf60e01b815260040160405180910390fd5b60008281526002602052604090206001015434146120a35760405163cd1c886760e01b815260040160405180910390fd5b6120ad338361232c565b6000828152600260205260408120600301546120c99042612fbd565b60008481526002602081815260409283902090910154825134815291820152908101829052909150839033907f8c61c0751c0e925b40e7a528992e1413a937c058ac7eafd0c61f75abd3a8225d9060600160405180910390a35050610ba0600160008051602061311983398151915255565b6001600160a01b038216600090815260036020908152604080832084845282528083208151606081018352815481526001820154938101939093526002015460ff16158015918301919091528061219457506020810151155b156121a3576000915050610743565b60008381526002602052604090206003015481516121c19190612fbd565b42111561073d576000915050610743565b3360009081526001602052604090205460ff1661220257604051637bfa4b9f60e01b815260040160405180910390fd5b80518251146122245760405163512509d360e11b815260040160405180910390fd5b60005b82518110156117c25781818151811061224257612242612fe7565b60200260200101516000600201600085848151811061226357612263612fe7565b602002602001015181526020019081526020016000206001018190555082818151811061229257612292612fe7565b60200260200101517f40175eba104d8383c936ec96a9da297986b13a86e5b2a19296171b11533e59ce8383815181106122cd576122cd612fe7565b60200260200101516040516122e491815260200190565b60405180910390a2600101612227565b60008051602061311983398151915280546001190161232657604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6040805160608101825242815260008381526002602081815284832082015481850190815260018587018181526001600160a01b039990991685526003835286852097855296909152939091209151825591519281019290925591519101805460ff1916911515919091179055565b600160008051602061311983398151915255565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610743565b6123e06125cd565b565b6123ea6125cd565b6123e06125f2565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061247957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661246d6000805160206130f9833981519152546001600160a01b031690565b6001600160a01b031614155b156123e05760405163703e46dd60e11b815260040160405180910390fd5b6000546001600160a01b03163314610ba0576040516330cd747160e01b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561251c575060408051601f3d908101601f19168201909252612519918101906130c3565b60015b61254957604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b6000805160206130f9833981519152811461257a57604051632a87526960e21b815260048101829052602401612540565b6117c283836125fa565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146123e05760405163703e46dd60e11b815260040160405180910390fd5b6125d5612650565b6123e057604051631afcd79f60e31b815260040160405180910390fd5b61239b6125cd565b6126038261266a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612648576117c282826126cf565b611009612745565b600061265a6123af565b54600160401b900460ff16919050565b806001600160a01b03163b6000036126a057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401612540565b6000805160206130f983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516126ec91906130dc565b600060405180830381855af49150503d8060008114612727576040519150601f19603f3d011682016040523d82523d6000602084013e61272c565b606091505b509150915061273c858383612764565b95945050505050565b34156123e05760405163b398979f60e01b815260040160405180910390fd5b60608261277957612774826127c3565b6127bc565b815115801561279057506001600160a01b0384163b155b156127b957604051639996b31560e01b81526001600160a01b0385166004820152602401612540565b50805b9392505050565b8051156127d35780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b0381168114610ba057600080fd5b6000806040838503121561281457600080fd5b823561281f816127ec565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561286b5761286b61282d565b604052919050565b60006001600160401b0382111561288c5761288c61282d565b5060051b60200190565b600082601f8301126128a757600080fd5b81356128ba6128b582612873565b612843565b8082825260208201915060208360051b8601019250858311156128dc57600080fd5b602085015b838110156128f95780358352602092830192016128e1565b5095945050505050565b8015158114610ba057600080fd5b600082601f83011261292257600080fd5b81356129306128b582612873565b8082825260208201915060208360051b86010192508583111561295257600080fd5b602085015b838110156128f957803561296a81612903565b835260209283019201612957565b600080600080600060a0868803121561299057600080fd5b85356001600160401b038111156129a657600080fd5b6129b288828901612896565b95505060208601356001600160401b038111156129ce57600080fd5b6129da88828901612896565b94505060408601356001600160401b038111156129f657600080fd5b612a0288828901612896565b93505060608601356001600160401b03811115612a1e57600080fd5b612a2a88828901612896565b92505060808601356001600160401b03811115612a4657600080fd5b612a5288828901612911565b9150509295509295909350565b600060208284031215612a7157600080fd5b81356127bc816127ec565b600060208284031215612a8e57600080fd5b81356001600160401b03811115612aa457600080fd5b612ab084828501612896565b949350505050565b600080600060608486031215612acd57600080fd5b833592506020840135612adf816127ec565b929592945050506040919091013590565b600060208284031215612b0257600080fd5b5035919050565b600082601f830112612b1a57600080fd5b8135612b286128b582612873565b8082825260208201915060208360051b860101925085831115612b4a57600080fd5b602085015b838110156128f9578035612b62816127ec565b835260209283019201612b4f565b600080600060608486031215612b8557600080fd5b8335612b90816127ec565b925060208401356001600160401b03811115612bab57600080fd5b612bb786828701612b09565b92505060408401356001600160401b03811115612bd357600080fd5b612bdf86828701612b09565b9150509250925092565b60008060408385031215612bfc57600080fd5b8235612c07816127ec565b915060208301356001600160401b03811115612c2257600080fd5b8301601f81018513612c3357600080fd5b80356001600160401b03811115612c4c57612c4c61282d565b612c5f601f8201601f1916602001612843565b818152866020838501011115612c7457600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060408385031215612ca757600080fd5b82356001600160401b03811115612cbd57600080fd5b612cc985828601612b09565b92505060208301356001600160401b03811115612ce557600080fd5b612cf185828601612896565b9150509250929050565b602080825282518282018190526000918401906040840190835b81811015612d355783511515835260209384019390920191600101612d15565b509095945050505050565b60008060408385031215612d5357600080fd5b50508035926020909101359150565b815181526020808301519082015260408083015115159082015260608101610743565b600080600060608486031215612d9a57600080fd5b83356001600160401b03811115612db057600080fd5b612dbc86828701612896565b9350506020840135612dcd816127ec565b915060408401356001600160401b03811115612de857600080fd5b612bdf86828701612896565b600080600060608486031215612e0957600080fd5b83356001600160401b03811115612e1f57600080fd5b612e2b86828701612896565b9350506020840135612adf816127ec565b60005b83811015612e57578181015183820152602001612e3f565b50506000910152565b6020815260008251806020840152612e7f816040850160208701612e3c565b601f01601f19169190910160400192915050565b600080600080600060a08688031215612eab57600080fd5b853594506020860135935060408601359250606086013591506080860135612ed281612903565b809150509295509295909350565b60008060408385031215612ef357600080fd5b8235612efe816127ec565b915060208301356001600160401b03811115612ce557600080fd5b602080825282518282018190526000918401906040840190835b81811015612d3557612f5c83855180518252602080820151908301526040908101511515910152565b6020939093019260609290920191600101612f33565b60008060408385031215612f8557600080fd5b82356001600160401b03811115612f9b57600080fd5b612cc985828601612896565b634e487b7160e01b600052601160045260246000fd5b8082018082111561074357610743612fa7565b600081612fdf57612fdf612fa7565b506000190190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561302f578151865260209586019590910190600101613011565b5093949350505050565b60408152600061304c6040830185612ffd565b90508260208301529392505050565b60006020828403121561306d57600080fd5b81516127bc816127ec565b60006020828403121561308a57600080fd5b81516127bc81612903565b6060815260006130a86060830186612ffd565b6001600160a01b039490941660208301525060400152919050565b6000602082840312156130d557600080fd5b5051919050565b600082516130ee818460208701612e3c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212207043ebe50d2f823d578fabcd8614db67c502c682548355c905b3820bed94d06064736f6c634300081c0033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D PUSH2 0x22 JUMP JUMPDEST PUSH2 0xD4 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x72 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH2 0xD1 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x316E PUSH2 0xFD PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x23FD ADD MSTORE DUP2 DUP2 PUSH2 0x2426 ADD MSTORE PUSH2 0x258F ADD MSTORE PUSH2 0x316E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x76319190 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0x99EA24FE GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xB6F1D140 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xB6F1D140 EQ PUSH2 0x557 JUMPI DUP1 PUSH4 0xC3C12E69 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0xCAAE24B3 EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0xF1AA52F4 EQ PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x99EA24FE EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0xB1B105FE EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0xB303F53F EQ PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x86778641 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x86778641 EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x8D13660E EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x8F0FF11B EQ PUSH2 0x477 JUMPI DUP1 PUSH4 0x8FD3AB80 EQ PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x76319190 EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0x773F2054 EQ PUSH2 0x3F5 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40033B3D GT PUSH2 0x16F JUMPI DUP1 PUSH4 0x52D1902D GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0x6D69FCAF EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40033B3D EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0x4A200FA5 EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0x529E2B32 EQ PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x21F06438 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x21F06438 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x240028E8 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x3428CEBB EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5059571 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x9B952BE EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x229 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2801 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x2978 JUMP JUMPDEST PUSH2 0x749 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A5F JUMP JUMPDEST PUSH2 0x979 JUMP JUMPDEST PUSH2 0x227 PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A7C JUMP JUMPDEST PUSH2 0xA14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x277 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x2B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AB8 JUMP JUMPDEST PUSH2 0xBA3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0xC58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x2E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF0 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B70 JUMP JUMPDEST PUSH2 0xCB8 JUMP JUMPDEST PUSH2 0x227 PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0x2BE9 JUMP JUMPDEST PUSH2 0xFEE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x350 PUSH2 0x34B CALLDATASIZE PUSH1 0x4 PUSH2 0x2C94 JUMP JUMPDEST PUSH2 0x100D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2CFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x372 PUSH2 0x131A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x372 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A5F JUMP JUMPDEST PUSH2 0x1337 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x3D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A5F JUMP JUMPDEST PUSH2 0x13DA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A5F JUMP JUMPDEST PUSH2 0x147B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x410 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D40 JUMP JUMPDEST PUSH2 0x151B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x159F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x445 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AB8 JUMP JUMPDEST PUSH2 0x1602 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46A PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x2801 JUMP JUMPDEST PUSH2 0x17C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2D62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x492 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D85 JUMP JUMPDEST PUSH2 0x1840 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x19BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x4C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DF4 JUMP JUMPDEST PUSH2 0x1A14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2E60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x525 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E93 JUMP JUMPDEST PUSH2 0x1C69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x54A PUSH2 0x545 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE0 JUMP JUMPDEST PUSH2 0x1CFC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2F19 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x572 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AB8 JUMP JUMPDEST PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0x227 PUSH2 0x585 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF0 JUMP JUMPDEST PUSH2 0x2012 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x5A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2801 JUMP JUMPDEST PUSH2 0x213B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x5C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F72 JUMP JUMPDEST PUSH2 0x21D2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5FA JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO DUP1 PUSH2 0x633 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x651 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 SLOAD PUSH2 0x66F SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x68F JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x6A1 DUP4 PUSH2 0x2FD0 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CCC6C74B339E9D58B89AA6BB58D0519712AEFF106F7981D466F54572CB88B42 DUP4 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x6E6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x73D JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH32 0x294E395C96EE31E4373F6B284B107E5341FFA80F2C53E582BC3CFB1F9EFE500E SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x779 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 MLOAD DUP6 MLOAD EQ ISZERO DUP1 PUSH2 0x78C JUMPI POP DUP3 MLOAD DUP6 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x799 JUMPI POP DUP2 MLOAD DUP6 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x7A6 JUMPI POP DUP1 MLOAD DUP6 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x7C4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x971 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x7E2 JUMPI PUSH2 0x7E2 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x803 JUMPI PUSH2 0x803 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x832 JUMPI PUSH2 0x832 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x853 JUMPI PUSH2 0x853 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x882 JUMPI PUSH2 0x882 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x8A3 JUMPI PUSH2 0x8A3 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x8D2 JUMPI PUSH2 0x8D2 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x8F3 JUMPI PUSH2 0x8F3 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x935 JUMPI PUSH2 0x935 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH32 0xA7C3F5F04F0C05AD82FCDF81039DA5A01BF41CE2769B7B347AFA43BB65E44266 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x7C7 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x9A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9CB JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0xA1C PUSH2 0x22F4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA40 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xAEC JUMPI PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xA66 JUMPI PUSH2 0xA66 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH1 0xFF AND PUSH2 0xAA4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xABD JUMPI PUSH2 0xABD PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD DUP3 PUSH2 0xAE2 SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST SWAP2 POP PUSH1 0x1 ADD PUSH2 0xA44 JUMP JUMPDEST POP DUP1 CALLVALUE EQ PUSH2 0xB0D JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xB44 JUMPI PUSH2 0xB3C CALLER DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB2F JUMPI PUSH2 0xB2F PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x232C JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB10 JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xAEC2D14270982470108E2C88FECCA013DBA6CAF4EDB3C8C7AC6D9DB8B26CB89F DUP4 CALLVALUE PUSH1 0x40 MLOAD PUSH2 0xB80 SWAP3 SWAP2 SWAP1 PUSH2 0x3039 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0xBA0 PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xBD3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xBFA JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD DUP4 DUP2 MSTORE DUP6 SWAP2 PUSH32 0x376716BD86293FF8B34061B9AF3CAC5116F15E0F2CBF689D822B6D6D7B1EECA9 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC83 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA45F47FDEA8A1EFDD9029A5691C7F759C32B7C698632B563573E155625D16933 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCC2 PUSH2 0x23AF JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0xCE9 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xD05 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xD13 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xD31 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xD5B JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0xD82 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD8A PUSH2 0x23D8 JUMP JUMPDEST PUSH2 0xD92 PUSH2 0x23E2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x6 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0xEAB JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xDE3 JUMPI PUSH2 0xDE3 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEA3 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 ADD PUSH1 0x0 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE14 JUMPI PUSH2 0xE14 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xE65 JUMPI PUSH2 0xE65 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x1 ADD PUSH2 0xDBD JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0xF9D JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xED5 JUMPI PUSH2 0xED5 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF95 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x4 ADD PUSH1 0x0 DUP10 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xF06 JUMPI PUSH2 0xF06 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xF57 JUMPI PUSH2 0xF57 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD1BE2E90BD3D24839D9DD94AD871068E1F9688B02FA43F2A62C9975DFA9DE2D7 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x1 ADD PUSH2 0xEAF JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0xFE4 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFF6 PUSH2 0x23F2 JUMP JUMPDEST PUSH2 0xFFF DUP3 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0x1009 DUP3 DUP3 PUSH2 0x24C2 JUMP JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x1040 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x1062 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x107D JUMPI PUSH2 0x107D PUSH2 0x282D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x10A6 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1312 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 ADD PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x10CF JUMPI PUSH2 0x10CF PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x110B JUMPI PUSH2 0x110B PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 PUSH2 0x1143 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x1172 JUMPI PUSH1 0x0 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x115C JUMPI PUSH2 0x115C PUSH2 0x2FE7 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP PUSH2 0x130A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x118B JUMPI PUSH2 0x118B PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 PUSH1 0x0 ADD SLOAD PUSH2 0x11B4 SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x11CF JUMPI PUSH1 0x0 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x115C JUMPI PUSH2 0x115C PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x11E1 DUP4 PUSH2 0x2FD0 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11F8 JUMPI PUSH2 0x11F8 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1212 JUMPI PUSH2 0x1212 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CCC6C74B339E9D58B89AA6BB58D0519712AEFF106F7981D466F54572CB88B42 DUP4 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x1258 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x12E4 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP5 MLOAD DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x128C JUMPI PUSH2 0x128C PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x12A6 JUMPI PUSH2 0x12A6 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x294E395C96EE31E4373F6B284B107E5341FFA80F2C53E582BC3CFB1F9EFE500E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST PUSH1 0x1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x12F8 JUMPI PUSH2 0x12F8 PUSH2 0x2FE7 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x10AC JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1324 PUSH2 0x2584 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30F9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1367 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x138E JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xD1BE2E90BD3D24839D9DD94AD871068E1F9688B02FA43F2A62C9975DFA9DE2D7 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1405 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x142C JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x14AB JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x14D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xBEA12876694C4055C71F74308F752B9027CF3D554194000A366ABDDFC239A306 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x154B JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP3 SWAP1 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x40175EBA104D8383C936EC96A9DA297986B13A86E5B2A19296171B11533E59CE SWAP1 PUSH2 0x1593 SWAP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x15CA JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x9E87FAC88FF661F02D44F95383C817FECE4BCE600A3DAB7A54406878B965E752 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x160A PUSH2 0x22F4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x162E JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD DUP4 SWAP1 PUSH1 0xFF AND PUSH2 0x1662 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16CD SWAP2 SWAP1 PUSH2 0x305B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x16F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1756 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1764 CALLER DUP6 PUSH2 0x232C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP6 SWAP2 CALLER SWAP2 PUSH32 0xD0DE3E759B6D8AE4AB8DFD56F0869B691034BF2F14B896155287E5CD61D66A70 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x17C2 PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x17ED PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1870 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP4 MLOAD EQ PUSH2 0x1892 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x18B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x19B6 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x18D7 JUMPI PUSH2 0x18D7 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x18F8 JUMPI PUSH2 0x18F8 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1954 JUMPI PUSH2 0x1954 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH32 0x376716BD86293FF8B34061B9AF3CAC5116F15E0F2CBF689D822B6D6D7B1EECA9 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x198F JUMPI PUSH2 0x198F PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x19A6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 ADD PUSH2 0x18BC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x19E7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD ADDRESS SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 JUMP JUMPDEST PUSH2 0x1A1C PUSH2 0x22F4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1A79 JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1B48 JUMPI PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A9F JUMPI PUSH2 0x1A9F PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH1 0xFF AND PUSH2 0x1ADD JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1AF6 JUMPI PUSH2 0x1AF6 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 PUSH2 0x1B3E SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST SWAP2 POP PUSH1 0x1 ADD PUSH2 0x1A7D JUMP JUMPDEST POP DUP1 DUP3 EQ PUSH2 0x1B69 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BBC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BE0 SWAP2 SWAP1 PUSH2 0x3078 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1C0B JUMPI PUSH2 0x1C03 CALLER DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB2F JUMPI PUSH2 0xB2F PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BE4 JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2BE07A645F06BFA8B189B4F0ABA9BF2109D098D03CBEDE0449641495BBA5D53D DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C49 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3095 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x17C2 PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1C99 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD DUP9 SWAP1 SSTORE SWAP2 DUP3 ADD DUP7 SWAP1 SSTORE PUSH1 0x3 DUP3 ADD DUP6 SWAP1 SSTORE PUSH1 0x4 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO OR SWAP1 SSTORE MLOAD DUP7 SWAP2 PUSH32 0xA7C3F5F04F0C05AD82FCDF81039DA5A01BF41CE2769B7B347AFA43BB65E44266 SWAP2 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1D19 JUMPI PUSH2 0x1D19 PUSH2 0x282D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1D70 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1D5D PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1D37 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1312 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP6 MLOAD SWAP1 SWAP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x1DAE JUMPI PUSH2 0x1DAE PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO SWAP1 DUP3 ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1E04 JUMPI PUSH2 0x1E04 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1D76 JUMP JUMPDEST PUSH2 0x1E1F PUSH2 0x22F4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1E43 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD DUP4 SWAP1 PUSH1 0xFF AND PUSH2 0x1E77 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1EB0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 EQ PUSH2 0x1EF2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F69 SWAP2 SWAP1 PUSH2 0x3078 JUMP JUMPDEST POP PUSH2 0x1F74 CALLER DUP6 PUSH2 0x232C JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0x1F90 SWAP1 TIMESTAMP PUSH2 0x2FBD JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 SWAP1 SWAP2 ADD SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 MSTORE SWAP2 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP DUP7 SWAP2 CALLER SWAP2 PUSH32 0x180FE4B156A592A405CDD866F58883063DB683348215E97CF864D6BF9679261C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH2 0x17C2 PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH2 0x201A PUSH2 0x22F4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x203E JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x2072 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD CALLVALUE EQ PUSH2 0x20A3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x20AD CALLER DUP4 PUSH2 0x232C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0x20C9 SWAP1 TIMESTAMP PUSH2 0x2FBD JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 SWAP1 SWAP2 ADD SLOAD DUP3 MLOAD CALLVALUE DUP2 MSTORE SWAP2 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 POP DUP4 SWAP1 CALLER SWAP1 PUSH32 0x8C61C0751C0E925B40E7A528992E1413A937C058AC7EAFD0C61F75ABD3A8225D SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH2 0xBA0 PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x2194 JUMPI POP PUSH1 0x20 DUP2 ADD MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x21A3 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x743 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 MLOAD PUSH2 0x21C1 SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x743 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2202 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x2224 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x17C2 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2242 JUMPI PUSH2 0x2242 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2263 JUMPI PUSH2 0x2263 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2292 JUMPI PUSH2 0x2292 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH32 0x40175EBA104D8383C936EC96A9DA297986B13A86E5B2A19296171B11533E59CE DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x22CD JUMPI PUSH2 0x22CD PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x22E4 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x2227 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 NOT ADD PUSH2 0x2326 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE TIMESTAMP DUP2 MSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE DUP5 DUP4 KECCAK256 DUP3 ADD SLOAD DUP2 DUP6 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 DUP6 DUP8 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 SWAP1 SWAP10 AND DUP6 MSTORE PUSH1 0x3 DUP4 MSTORE DUP7 DUP6 KECCAK256 SWAP8 DUP6 MSTORE SWAP7 SWAP1 SWAP2 MSTORE SWAP4 SWAP1 SWAP2 KECCAK256 SWAP2 MLOAD DUP3 SSTORE SWAP2 MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 MLOAD SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH2 0x743 JUMP JUMPDEST PUSH2 0x23E0 PUSH2 0x25CD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23EA PUSH2 0x25CD JUMP JUMPDEST PUSH2 0x23E0 PUSH2 0x25F2 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2479 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x246D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30F9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x23E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xBA0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x251C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2519 SWAP2 DUP2 ADD SWAP1 PUSH2 0x30C3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2549 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30F9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x257A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x2540 JUMP JUMPDEST PUSH2 0x17C2 DUP4 DUP4 PUSH2 0x25FA JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x23E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x25D5 PUSH2 0x2650 JUMP JUMPDEST PUSH2 0x23E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x239B PUSH2 0x25CD JUMP JUMPDEST PUSH2 0x2603 DUP3 PUSH2 0x266A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x2648 JUMPI PUSH2 0x17C2 DUP3 DUP3 PUSH2 0x26CF JUMP JUMPDEST PUSH2 0x1009 PUSH2 0x2745 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265A PUSH2 0x23AF JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x26A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2540 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30F9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x26EC SWAP2 SWAP1 PUSH2 0x30DC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2727 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x272C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x273C DUP6 DUP4 DUP4 PUSH2 0x2764 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x23E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x2779 JUMPI PUSH2 0x2774 DUP3 PUSH2 0x27C3 JUMP JUMPDEST PUSH2 0x27BC JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2790 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x27B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2540 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x27D3 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x281F DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x286B JUMPI PUSH2 0x286B PUSH2 0x282D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x288C JUMPI PUSH2 0x288C PUSH2 0x282D JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x28BA PUSH2 0x28B5 DUP3 PUSH2 0x2873 JUMP JUMPDEST PUSH2 0x2843 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x28DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28F9 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x28E1 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2930 PUSH2 0x28B5 DUP3 PUSH2 0x2873 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x2952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28F9 JUMPI DUP1 CALLDATALOAD PUSH2 0x296A DUP2 PUSH2 0x2903 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2957 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2990 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x29A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x29B2 DUP9 DUP3 DUP10 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x29CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x29DA DUP9 DUP3 DUP10 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x29F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A02 DUP9 DUP3 DUP10 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2A1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A2A DUP9 DUP3 DUP10 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2A46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A52 DUP9 DUP3 DUP10 ADD PUSH2 0x2911 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x27BC DUP2 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2AB0 DUP5 DUP3 DUP6 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2ACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2ADF DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B28 PUSH2 0x28B5 DUP3 PUSH2 0x2873 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x2B4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28F9 JUMPI DUP1 CALLDATALOAD PUSH2 0x2B62 DUP2 PUSH2 0x27EC JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2B4F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2B90 DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BB7 DUP7 DUP3 DUP8 ADD PUSH2 0x2B09 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BDF DUP7 DUP3 DUP8 ADD PUSH2 0x2B09 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2C07 DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x2C33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C4C JUMPI PUSH2 0x2C4C PUSH2 0x282D JUMP JUMPDEST PUSH2 0x2C5F PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x2843 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP7 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x2C74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CC9 DUP6 DUP3 DUP7 ADD PUSH2 0x2B09 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CF1 DUP6 DUP3 DUP7 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D35 JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2D15 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD PUSH2 0x743 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2D9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2DB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DBC DUP7 DUP3 DUP8 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2DCD DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2DE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BDF DUP7 DUP3 DUP8 ADD PUSH2 0x2896 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2E09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2E1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E2B DUP7 DUP3 DUP8 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2ADF DUP2 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E57 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E3F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2E7F DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2E3C JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2EAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x2ED2 DUP2 PUSH2 0x2903 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2EF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2EFE DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D35 JUMPI PUSH2 0x2F5C DUP4 DUP6 MLOAD DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2F33 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2F9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CC9 DUP6 DUP3 DUP7 ADD PUSH2 0x2896 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x743 JUMPI PUSH2 0x743 PUSH2 0x2FA7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x2FDF JUMPI PUSH2 0x2FDF PUSH2 0x2FA7 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x302F JUMPI DUP2 MLOAD DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3011 JUMP JUMPDEST POP SWAP4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x304C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2FFD JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x306D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x27BC DUP2 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x308A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x27BC DUP2 PUSH2 0x2903 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x30A8 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x30EE DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2E3C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC9B779B17422D0DF9222301 DUP12 ORIGIN 0xB4 0xD1 STATICCALL CHAINID 0xE0 PUSH18 0x723D6817E2486D003BECC55F00A264697066 PUSH20 0x582212207043EBE50D2F823D578FABCD8614DB67 0xC5 MUL 0xC6 DUP3 SLOAD DUP4 SSTORE 0xC9 SDIV 0xB3 DUP3 SIGNEXTEND 0xED SWAP5 0xD0 PUSH1 0x64 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"658:19683:20:-:0;;;1171:4:1;1128:48;;1491:53:20;;;;;;;;;-1:-1:-1;1515:22:20;:20;:22::i;:::-;658:19683;;7709:422:0;3147:66;7898:15;;;;;;;7894:76;;;7936:23;;-1:-1:-1;;;7936:23:0;;;;;;;;;;;7894:76;7983:14;;-1:-1:-1;;;;;7983:14:0;;;:34;7979:146;;8033:33;;-1:-1:-1;;;;;;8033:33:0;-1:-1:-1;;;;;8033:33:0;;;;;8085:29;;158:50:24;;;8085:29:0;;146:2:24;131:18;8085:29:0;;;;;;;7979:146;7758:373;7709:422::o;14:200:24:-;658:19683:20;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@UPGRADE_INTERFACE_VERSION_291":{"entryPoint":null,"id":291,"parameterSlots":0,"returnSlots":0},"@__ReentrancyGuard_init_489":{"entryPoint":9186,"id":489,"parameterSlots":0,"returnSlots":0},"@__ReentrancyGuard_init_unchained_507":{"entryPoint":9714,"id":507,"parameterSlots":0,"returnSlots":0},"@__UUPSUpgradeable_init_321":{"entryPoint":9176,"id":321,"parameterSlots":0,"returnSlots":0},"@_authorizeUpgrade_2333":{"entryPoint":9367,"id":2333,"parameterSlots":1,"returnSlots":0},"@_checkInitializing_175":{"entryPoint":9677,"id":175,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_1088":{"entryPoint":10053,"id":1088,"parameterSlots":0,"returnSlots":0},"@_checkNotDelegated_397":{"entryPoint":9604,"id":397,"parameterSlots":0,"returnSlots":0},"@_checkProxy_381":{"entryPoint":9202,"id":381,"parameterSlots":0,"returnSlots":0},"@_createViewPermission_3288":{"entryPoint":9004,"id":3288,"parameterSlots":2,"returnSlots":0},"@_getInitializableStorage_266":{"entryPoint":9135,"id":266,"parameterSlots":0,"returnSlots":1},"@_getReentrancyGuardStorage_477":{"entryPoint":null,"id":477,"parameterSlots":0,"returnSlots":1},"@_initializableStorageSlot_252":{"entryPoint":null,"id":252,"parameterSlots":0,"returnSlots":1},"@_isInitializing_243":{"entryPoint":9808,"id":243,"parameterSlots":0,"returnSlots":1},"@_nonReentrantAfter_559":{"entryPoint":9115,"id":559,"parameterSlots":0,"returnSlots":0},"@_nonReentrantBefore_543":{"entryPoint":8948,"id":543,"parameterSlots":0,"returnSlots":0},"@_revert_1896":{"entryPoint":10179,"id":1896,"parameterSlots":1,"returnSlots":0},"@_setImplementation_868":{"entryPoint":9834,"id":868,"parameterSlots":1,"returnSlots":0},"@_upgradeToAndCallUUPS_448":{"entryPoint":9410,"id":448,"parameterSlots":2,"returnSlots":0},"@addAdmin_2364":{"entryPoint":5082,"id":2364,"parameterSlots":1,"returnSlots":0},"@addSupportedToken_2812":{"entryPoint":4919,"id":2812,"parameterSlots":1,"returnSlots":0},"@batchConsumeView_3650":{"entryPoint":4109,"id":3650,"parameterSlots":2,"returnSlots":1},"@batchPurchaseWithNative_3201":{"entryPoint":2580,"id":3201,"parameterSlots":1,"returnSlots":0},"@batchPurchase_3113":{"entryPoint":6676,"id":3113,"parameterSlots":3,"returnSlots":0},"@batchSetContentConfig_2572":{"entryPoint":1865,"id":2572,"parameterSlots":5,"returnSlots":0},"@batchUpdateNativePrice_2781":{"entryPoint":8658,"id":2781,"parameterSlots":2,"returnSlots":0},"@batchUpdateTokenPrice_2699":{"entryPoint":6208,"id":2699,"parameterSlots":3,"returnSlots":0},"@consumeView_3500":{"entryPoint":1482,"id":3500,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_1814":{"entryPoint":9935,"id":1814,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_1984":{"entryPoint":null,"id":1984,"parameterSlots":1,"returnSlots":1},"@getImplementation_841":{"entryPoint":null,"id":841,"parameterSlots":0,"returnSlots":1},"@getPermissionDetails_3415":{"entryPoint":6087,"id":3415,"parameterSlots":2,"returnSlots":1},"@getUserPermissions_3396":{"entryPoint":7420,"id":3396,"parameterSlots":2,"returnSlots":1},"@hasViewPermission_3340":{"entryPoint":8507,"id":3340,"parameterSlots":2,"returnSlots":1},"@initialize_2299":{"entryPoint":3256,"id":2299,"parameterSlots":3,"returnSlots":0},"@isContentActive_2587":{"entryPoint":null,"id":2587,"parameterSlots":1,"returnSlots":1},"@isSupportedToken_2857":{"entryPoint":null,"id":2857,"parameterSlots":1,"returnSlots":1},"@migrate_2323":{"entryPoint":6588,"id":2323,"parameterSlots":0,"returnSlots":0},"@pause_3666":{"entryPoint":5535,"id":3666,"parameterSlots":0,"returnSlots":0},"@proxiableUUID_339":{"entryPoint":4890,"id":339,"parameterSlots":0,"returnSlots":1},"@purchaseContent_2941":{"entryPoint":7703,"id":2941,"parameterSlots":3,"returnSlots":0},"@purchaseWithNFT_3259":{"entryPoint":5634,"id":3259,"parameterSlots":3,"returnSlots":0},"@purchaseWithNative_2998":{"entryPoint":8210,"id":2998,"parameterSlots":1,"returnSlots":0},"@removeAdmin_2395":{"entryPoint":2425,"id":2395,"parameterSlots":1,"returnSlots":0},"@removeSupportedToken_2843":{"entryPoint":5243,"id":2843,"parameterSlots":1,"returnSlots":0},"@setContentConfig_2452":{"entryPoint":7273,"id":2452,"parameterSlots":5,"returnSlots":0},"@unpause_3682":{"entryPoint":3160,"id":3682,"parameterSlots":0,"returnSlots":0},"@updateNativePrice_2724":{"entryPoint":5403,"id":2724,"parameterSlots":2,"returnSlots":0},"@updateTokenPrice_2627":{"entryPoint":2979,"id":2627,"parameterSlots":3,"returnSlots":0},"@upgradeToAndCall_359":{"entryPoint":4078,"id":359,"parameterSlots":2,"returnSlots":0},"@upgradeToAndCall_904":{"entryPoint":9722,"id":904,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_1854":{"entryPoint":10084,"id":1854,"parameterSlots":3,"returnSlots":1},"@version_2309":{"entryPoint":null,"id":2309,"parameterSlots":0,"returnSlots":1},"abi_decode_array_address_dyn":{"entryPoint":11017,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_bool_dyn":{"entryPoint":10513,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_array_uint256_dyn":{"entryPoint":10390,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":10847,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":12379,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_array$_t_address_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptr":{"entryPoint":11120,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":12000,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_memory_ptr":{"entryPoint":11241,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":10241,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":11412,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":10876,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":11653,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256":{"entryPoint":11764,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":12146,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_bool_$dyn_memory_ptr":{"entryPoint":10616,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":12408,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":12483,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":10992,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_addresst_uint256":{"entryPoint":10936,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_uint256t_uint256":{"entryPoint":11584,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_bool":{"entryPoint":11923,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_array_uint256_dyn":{"entryPoint":12285,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_struct_ViewPermission":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":12508,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":11515,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":12057,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__to_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed":{"entryPoint":12437,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_uint256__to_t_array$_t_uint256_$dyn_memory_ptr_t_uint256__fromStack_reversed":{"entryPoint":12345,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":11872,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_struct$_ViewPermission_$4075_memory_ptr__to_t_struct$_ViewPermission_$4075_memory_ptr__fromStack_reversed":{"entryPoint":11618,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":4,"returnSlots":1},"allocate_memory":{"entryPoint":10307,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_array_uint256_dyn":{"entryPoint":10355,"id":null,"parameterSlots":1,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":12221,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":11836,"id":null,"parameterSlots":3,"returnSlots":0},"decrement_t_uint256":{"entryPoint":12240,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":12199,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":12263,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":10285,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_address":{"entryPoint":10220,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_bool":{"entryPoint":10499,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:19428:24","nodeType":"YulBlock","src":"0:19428:24","statements":[{"nativeSrc":"6:3:24","nodeType":"YulBlock","src":"6:3:24","statements":[]},{"body":{"nativeSrc":"59:86:24","nodeType":"YulBlock","src":"59:86:24","statements":[{"body":{"nativeSrc":"123:16:24","nodeType":"YulBlock","src":"123:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"132:1:24","nodeType":"YulLiteral","src":"132:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"135:1:24","nodeType":"YulLiteral","src":"135:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"125:6:24","nodeType":"YulIdentifier","src":"125:6:24"},"nativeSrc":"125:12:24","nodeType":"YulFunctionCall","src":"125:12:24"},"nativeSrc":"125:12:24","nodeType":"YulExpressionStatement","src":"125:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"82:5:24","nodeType":"YulIdentifier","src":"82:5:24"},{"arguments":[{"name":"value","nativeSrc":"93:5:24","nodeType":"YulIdentifier","src":"93:5:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"108:3:24","nodeType":"YulLiteral","src":"108:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"113:1:24","nodeType":"YulLiteral","src":"113:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"104:3:24","nodeType":"YulIdentifier","src":"104:3:24"},"nativeSrc":"104:11:24","nodeType":"YulFunctionCall","src":"104:11:24"},{"kind":"number","nativeSrc":"117:1:24","nodeType":"YulLiteral","src":"117:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"100:3:24","nodeType":"YulIdentifier","src":"100:3:24"},"nativeSrc":"100:19:24","nodeType":"YulFunctionCall","src":"100:19:24"}],"functionName":{"name":"and","nativeSrc":"89:3:24","nodeType":"YulIdentifier","src":"89:3:24"},"nativeSrc":"89:31:24","nodeType":"YulFunctionCall","src":"89:31:24"}],"functionName":{"name":"eq","nativeSrc":"79:2:24","nodeType":"YulIdentifier","src":"79:2:24"},"nativeSrc":"79:42:24","nodeType":"YulFunctionCall","src":"79:42:24"}],"functionName":{"name":"iszero","nativeSrc":"72:6:24","nodeType":"YulIdentifier","src":"72:6:24"},"nativeSrc":"72:50:24","nodeType":"YulFunctionCall","src":"72:50:24"},"nativeSrc":"69:70:24","nodeType":"YulIf","src":"69:70:24"}]},"name":"validator_revert_address","nativeSrc":"14:131:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"48:5:24","nodeType":"YulTypedName","src":"48:5:24","type":""}],"src":"14:131:24"},{"body":{"nativeSrc":"237:280:24","nodeType":"YulBlock","src":"237:280:24","statements":[{"body":{"nativeSrc":"283:16:24","nodeType":"YulBlock","src":"283:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"292:1:24","nodeType":"YulLiteral","src":"292:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"295:1:24","nodeType":"YulLiteral","src":"295:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"285:6:24","nodeType":"YulIdentifier","src":"285:6:24"},"nativeSrc":"285:12:24","nodeType":"YulFunctionCall","src":"285:12:24"},"nativeSrc":"285:12:24","nodeType":"YulExpressionStatement","src":"285:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"258:7:24","nodeType":"YulIdentifier","src":"258:7:24"},{"name":"headStart","nativeSrc":"267:9:24","nodeType":"YulIdentifier","src":"267:9:24"}],"functionName":{"name":"sub","nativeSrc":"254:3:24","nodeType":"YulIdentifier","src":"254:3:24"},"nativeSrc":"254:23:24","nodeType":"YulFunctionCall","src":"254:23:24"},{"kind":"number","nativeSrc":"279:2:24","nodeType":"YulLiteral","src":"279:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"250:3:24","nodeType":"YulIdentifier","src":"250:3:24"},"nativeSrc":"250:32:24","nodeType":"YulFunctionCall","src":"250:32:24"},"nativeSrc":"247:52:24","nodeType":"YulIf","src":"247:52:24"},{"nativeSrc":"308:36:24","nodeType":"YulVariableDeclaration","src":"308:36:24","value":{"arguments":[{"name":"headStart","nativeSrc":"334:9:24","nodeType":"YulIdentifier","src":"334:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"321:12:24","nodeType":"YulIdentifier","src":"321:12:24"},"nativeSrc":"321:23:24","nodeType":"YulFunctionCall","src":"321:23:24"},"variables":[{"name":"value","nativeSrc":"312:5:24","nodeType":"YulTypedName","src":"312:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"378:5:24","nodeType":"YulIdentifier","src":"378:5:24"}],"functionName":{"name":"validator_revert_address","nativeSrc":"353:24:24","nodeType":"YulIdentifier","src":"353:24:24"},"nativeSrc":"353:31:24","nodeType":"YulFunctionCall","src":"353:31:24"},"nativeSrc":"353:31:24","nodeType":"YulExpressionStatement","src":"353:31:24"},{"nativeSrc":"393:15:24","nodeType":"YulAssignment","src":"393:15:24","value":{"name":"value","nativeSrc":"403:5:24","nodeType":"YulIdentifier","src":"403:5:24"},"variableNames":[{"name":"value0","nativeSrc":"393:6:24","nodeType":"YulIdentifier","src":"393:6:24"}]},{"nativeSrc":"417:16:24","nodeType":"YulVariableDeclaration","src":"417:16:24","value":{"kind":"number","nativeSrc":"432:1:24","nodeType":"YulLiteral","src":"432:1:24","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"421:7:24","nodeType":"YulTypedName","src":"421:7:24","type":""}]},{"nativeSrc":"442:43:24","nodeType":"YulAssignment","src":"442:43:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"470:9:24","nodeType":"YulIdentifier","src":"470:9:24"},{"kind":"number","nativeSrc":"481:2:24","nodeType":"YulLiteral","src":"481:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"466:3:24","nodeType":"YulIdentifier","src":"466:3:24"},"nativeSrc":"466:18:24","nodeType":"YulFunctionCall","src":"466:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"453:12:24","nodeType":"YulIdentifier","src":"453:12:24"},"nativeSrc":"453:32:24","nodeType":"YulFunctionCall","src":"453:32:24"},"variableNames":[{"name":"value_1","nativeSrc":"442:7:24","nodeType":"YulIdentifier","src":"442:7:24"}]},{"nativeSrc":"494:17:24","nodeType":"YulAssignment","src":"494:17:24","value":{"name":"value_1","nativeSrc":"504:7:24","nodeType":"YulIdentifier","src":"504:7:24"},"variableNames":[{"name":"value1","nativeSrc":"494:6:24","nodeType":"YulIdentifier","src":"494:6:24"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nativeSrc":"150:367:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"195:9:24","nodeType":"YulTypedName","src":"195:9:24","type":""},{"name":"dataEnd","nativeSrc":"206:7:24","nodeType":"YulTypedName","src":"206:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"218:6:24","nodeType":"YulTypedName","src":"218:6:24","type":""},{"name":"value1","nativeSrc":"226:6:24","nodeType":"YulTypedName","src":"226:6:24","type":""}],"src":"150:367:24"},{"body":{"nativeSrc":"617:92:24","nodeType":"YulBlock","src":"617:92:24","statements":[{"nativeSrc":"627:26:24","nodeType":"YulAssignment","src":"627:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"639:9:24","nodeType":"YulIdentifier","src":"639:9:24"},{"kind":"number","nativeSrc":"650:2:24","nodeType":"YulLiteral","src":"650:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"635:3:24","nodeType":"YulIdentifier","src":"635:3:24"},"nativeSrc":"635:18:24","nodeType":"YulFunctionCall","src":"635:18:24"},"variableNames":[{"name":"tail","nativeSrc":"627:4:24","nodeType":"YulIdentifier","src":"627:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"669:9:24","nodeType":"YulIdentifier","src":"669:9:24"},{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"694:6:24","nodeType":"YulIdentifier","src":"694:6:24"}],"functionName":{"name":"iszero","nativeSrc":"687:6:24","nodeType":"YulIdentifier","src":"687:6:24"},"nativeSrc":"687:14:24","nodeType":"YulFunctionCall","src":"687:14:24"}],"functionName":{"name":"iszero","nativeSrc":"680:6:24","nodeType":"YulIdentifier","src":"680:6:24"},"nativeSrc":"680:22:24","nodeType":"YulFunctionCall","src":"680:22:24"}],"functionName":{"name":"mstore","nativeSrc":"662:6:24","nodeType":"YulIdentifier","src":"662:6:24"},"nativeSrc":"662:41:24","nodeType":"YulFunctionCall","src":"662:41:24"},"nativeSrc":"662:41:24","nodeType":"YulExpressionStatement","src":"662:41:24"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nativeSrc":"522:187:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"586:9:24","nodeType":"YulTypedName","src":"586:9:24","type":""},{"name":"value0","nativeSrc":"597:6:24","nodeType":"YulTypedName","src":"597:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"608:4:24","nodeType":"YulTypedName","src":"608:4:24","type":""}],"src":"522:187:24"},{"body":{"nativeSrc":"746:95:24","nodeType":"YulBlock","src":"746:95:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"763:1:24","nodeType":"YulLiteral","src":"763:1:24","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"770:3:24","nodeType":"YulLiteral","src":"770:3:24","type":"","value":"224"},{"kind":"number","nativeSrc":"775:10:24","nodeType":"YulLiteral","src":"775:10:24","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"766:3:24","nodeType":"YulIdentifier","src":"766:3:24"},"nativeSrc":"766:20:24","nodeType":"YulFunctionCall","src":"766:20:24"}],"functionName":{"name":"mstore","nativeSrc":"756:6:24","nodeType":"YulIdentifier","src":"756:6:24"},"nativeSrc":"756:31:24","nodeType":"YulFunctionCall","src":"756:31:24"},"nativeSrc":"756:31:24","nodeType":"YulExpressionStatement","src":"756:31:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"803:1:24","nodeType":"YulLiteral","src":"803:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"806:4:24","nodeType":"YulLiteral","src":"806:4:24","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"796:6:24","nodeType":"YulIdentifier","src":"796:6:24"},"nativeSrc":"796:15:24","nodeType":"YulFunctionCall","src":"796:15:24"},"nativeSrc":"796:15:24","nodeType":"YulExpressionStatement","src":"796:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"827:1:24","nodeType":"YulLiteral","src":"827:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"830:4:24","nodeType":"YulLiteral","src":"830:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"820:6:24","nodeType":"YulIdentifier","src":"820:6:24"},"nativeSrc":"820:15:24","nodeType":"YulFunctionCall","src":"820:15:24"},"nativeSrc":"820:15:24","nodeType":"YulExpressionStatement","src":"820:15:24"}]},"name":"panic_error_0x41","nativeSrc":"714:127:24","nodeType":"YulFunctionDefinition","src":"714:127:24"},{"body":{"nativeSrc":"891:230:24","nodeType":"YulBlock","src":"891:230:24","statements":[{"nativeSrc":"901:19:24","nodeType":"YulAssignment","src":"901:19:24","value":{"arguments":[{"kind":"number","nativeSrc":"917:2:24","nodeType":"YulLiteral","src":"917:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"911:5:24","nodeType":"YulIdentifier","src":"911:5:24"},"nativeSrc":"911:9:24","nodeType":"YulFunctionCall","src":"911:9:24"},"variableNames":[{"name":"memPtr","nativeSrc":"901:6:24","nodeType":"YulIdentifier","src":"901:6:24"}]},{"nativeSrc":"929:58:24","nodeType":"YulVariableDeclaration","src":"929:58:24","value":{"arguments":[{"name":"memPtr","nativeSrc":"951:6:24","nodeType":"YulIdentifier","src":"951:6:24"},{"arguments":[{"arguments":[{"name":"size","nativeSrc":"967:4:24","nodeType":"YulIdentifier","src":"967:4:24"},{"kind":"number","nativeSrc":"973:2:24","nodeType":"YulLiteral","src":"973:2:24","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"963:3:24","nodeType":"YulIdentifier","src":"963:3:24"},"nativeSrc":"963:13:24","nodeType":"YulFunctionCall","src":"963:13:24"},{"arguments":[{"kind":"number","nativeSrc":"982:2:24","nodeType":"YulLiteral","src":"982:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"978:3:24","nodeType":"YulIdentifier","src":"978:3:24"},"nativeSrc":"978:7:24","nodeType":"YulFunctionCall","src":"978:7:24"}],"functionName":{"name":"and","nativeSrc":"959:3:24","nodeType":"YulIdentifier","src":"959:3:24"},"nativeSrc":"959:27:24","nodeType":"YulFunctionCall","src":"959:27:24"}],"functionName":{"name":"add","nativeSrc":"947:3:24","nodeType":"YulIdentifier","src":"947:3:24"},"nativeSrc":"947:40:24","nodeType":"YulFunctionCall","src":"947:40:24"},"variables":[{"name":"newFreePtr","nativeSrc":"933:10:24","nodeType":"YulTypedName","src":"933:10:24","type":""}]},{"body":{"nativeSrc":"1062:22:24","nodeType":"YulBlock","src":"1062:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1064:16:24","nodeType":"YulIdentifier","src":"1064:16:24"},"nativeSrc":"1064:18:24","nodeType":"YulFunctionCall","src":"1064:18:24"},"nativeSrc":"1064:18:24","nodeType":"YulExpressionStatement","src":"1064:18:24"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1005:10:24","nodeType":"YulIdentifier","src":"1005:10:24"},{"kind":"number","nativeSrc":"1017:18:24","nodeType":"YulLiteral","src":"1017:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1002:2:24","nodeType":"YulIdentifier","src":"1002:2:24"},"nativeSrc":"1002:34:24","nodeType":"YulFunctionCall","src":"1002:34:24"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1041:10:24","nodeType":"YulIdentifier","src":"1041:10:24"},{"name":"memPtr","nativeSrc":"1053:6:24","nodeType":"YulIdentifier","src":"1053:6:24"}],"functionName":{"name":"lt","nativeSrc":"1038:2:24","nodeType":"YulIdentifier","src":"1038:2:24"},"nativeSrc":"1038:22:24","nodeType":"YulFunctionCall","src":"1038:22:24"}],"functionName":{"name":"or","nativeSrc":"999:2:24","nodeType":"YulIdentifier","src":"999:2:24"},"nativeSrc":"999:62:24","nodeType":"YulFunctionCall","src":"999:62:24"},"nativeSrc":"996:88:24","nodeType":"YulIf","src":"996:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1100:2:24","nodeType":"YulLiteral","src":"1100:2:24","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1104:10:24","nodeType":"YulIdentifier","src":"1104:10:24"}],"functionName":{"name":"mstore","nativeSrc":"1093:6:24","nodeType":"YulIdentifier","src":"1093:6:24"},"nativeSrc":"1093:22:24","nodeType":"YulFunctionCall","src":"1093:22:24"},"nativeSrc":"1093:22:24","nodeType":"YulExpressionStatement","src":"1093:22:24"}]},"name":"allocate_memory","nativeSrc":"846:275:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nativeSrc":"871:4:24","nodeType":"YulTypedName","src":"871:4:24","type":""}],"returnVariables":[{"name":"memPtr","nativeSrc":"880:6:24","nodeType":"YulTypedName","src":"880:6:24","type":""}],"src":"846:275:24"},{"body":{"nativeSrc":"1195:114:24","nodeType":"YulBlock","src":"1195:114:24","statements":[{"body":{"nativeSrc":"1239:22:24","nodeType":"YulBlock","src":"1239:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1241:16:24","nodeType":"YulIdentifier","src":"1241:16:24"},"nativeSrc":"1241:18:24","nodeType":"YulFunctionCall","src":"1241:18:24"},"nativeSrc":"1241:18:24","nodeType":"YulExpressionStatement","src":"1241:18:24"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1211:6:24","nodeType":"YulIdentifier","src":"1211:6:24"},{"kind":"number","nativeSrc":"1219:18:24","nodeType":"YulLiteral","src":"1219:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1208:2:24","nodeType":"YulIdentifier","src":"1208:2:24"},"nativeSrc":"1208:30:24","nodeType":"YulFunctionCall","src":"1208:30:24"},"nativeSrc":"1205:56:24","nodeType":"YulIf","src":"1205:56:24"},{"nativeSrc":"1270:33:24","nodeType":"YulAssignment","src":"1270:33:24","value":{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1286:1:24","nodeType":"YulLiteral","src":"1286:1:24","type":"","value":"5"},{"name":"length","nativeSrc":"1289:6:24","nodeType":"YulIdentifier","src":"1289:6:24"}],"functionName":{"name":"shl","nativeSrc":"1282:3:24","nodeType":"YulIdentifier","src":"1282:3:24"},"nativeSrc":"1282:14:24","nodeType":"YulFunctionCall","src":"1282:14:24"},{"kind":"number","nativeSrc":"1298:4:24","nodeType":"YulLiteral","src":"1298:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1278:3:24","nodeType":"YulIdentifier","src":"1278:3:24"},"nativeSrc":"1278:25:24","nodeType":"YulFunctionCall","src":"1278:25:24"},"variableNames":[{"name":"size","nativeSrc":"1270:4:24","nodeType":"YulIdentifier","src":"1270:4:24"}]}]},"name":"array_allocation_size_array_uint256_dyn","nativeSrc":"1126:183:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nativeSrc":"1175:6:24","nodeType":"YulTypedName","src":"1175:6:24","type":""}],"returnVariables":[{"name":"size","nativeSrc":"1186:4:24","nodeType":"YulTypedName","src":"1186:4:24","type":""}],"src":"1126:183:24"},{"body":{"nativeSrc":"1378:659:24","nodeType":"YulBlock","src":"1378:659:24","statements":[{"body":{"nativeSrc":"1427:16:24","nodeType":"YulBlock","src":"1427:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1436:1:24","nodeType":"YulLiteral","src":"1436:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1439:1:24","nodeType":"YulLiteral","src":"1439:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1429:6:24","nodeType":"YulIdentifier","src":"1429:6:24"},"nativeSrc":"1429:12:24","nodeType":"YulFunctionCall","src":"1429:12:24"},"nativeSrc":"1429:12:24","nodeType":"YulExpressionStatement","src":"1429:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1406:6:24","nodeType":"YulIdentifier","src":"1406:6:24"},{"kind":"number","nativeSrc":"1414:4:24","nodeType":"YulLiteral","src":"1414:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1402:3:24","nodeType":"YulIdentifier","src":"1402:3:24"},"nativeSrc":"1402:17:24","nodeType":"YulFunctionCall","src":"1402:17:24"},{"name":"end","nativeSrc":"1421:3:24","nodeType":"YulIdentifier","src":"1421:3:24"}],"functionName":{"name":"slt","nativeSrc":"1398:3:24","nodeType":"YulIdentifier","src":"1398:3:24"},"nativeSrc":"1398:27:24","nodeType":"YulFunctionCall","src":"1398:27:24"}],"functionName":{"name":"iszero","nativeSrc":"1391:6:24","nodeType":"YulIdentifier","src":"1391:6:24"},"nativeSrc":"1391:35:24","nodeType":"YulFunctionCall","src":"1391:35:24"},"nativeSrc":"1388:55:24","nodeType":"YulIf","src":"1388:55:24"},{"nativeSrc":"1452:34:24","nodeType":"YulVariableDeclaration","src":"1452:34:24","value":{"arguments":[{"name":"offset","nativeSrc":"1479:6:24","nodeType":"YulIdentifier","src":"1479:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"1466:12:24","nodeType":"YulIdentifier","src":"1466:12:24"},"nativeSrc":"1466:20:24","nodeType":"YulFunctionCall","src":"1466:20:24"},"variables":[{"name":"length","nativeSrc":"1456:6:24","nodeType":"YulTypedName","src":"1456:6:24","type":""}]},{"nativeSrc":"1495:75:24","nodeType":"YulVariableDeclaration","src":"1495:75:24","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1562:6:24","nodeType":"YulIdentifier","src":"1562:6:24"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nativeSrc":"1522:39:24","nodeType":"YulIdentifier","src":"1522:39:24"},"nativeSrc":"1522:47:24","nodeType":"YulFunctionCall","src":"1522:47:24"}],"functionName":{"name":"allocate_memory","nativeSrc":"1506:15:24","nodeType":"YulIdentifier","src":"1506:15:24"},"nativeSrc":"1506:64:24","nodeType":"YulFunctionCall","src":"1506:64:24"},"variables":[{"name":"dst","nativeSrc":"1499:3:24","nodeType":"YulTypedName","src":"1499:3:24","type":""}]},{"nativeSrc":"1579:18:24","nodeType":"YulVariableDeclaration","src":"1579:18:24","value":{"name":"dst","nativeSrc":"1594:3:24","nodeType":"YulIdentifier","src":"1594:3:24"},"variables":[{"name":"array_1","nativeSrc":"1583:7:24","nodeType":"YulTypedName","src":"1583:7:24","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"1613:3:24","nodeType":"YulIdentifier","src":"1613:3:24"},{"name":"length","nativeSrc":"1618:6:24","nodeType":"YulIdentifier","src":"1618:6:24"}],"functionName":{"name":"mstore","nativeSrc":"1606:6:24","nodeType":"YulIdentifier","src":"1606:6:24"},"nativeSrc":"1606:19:24","nodeType":"YulFunctionCall","src":"1606:19:24"},"nativeSrc":"1606:19:24","nodeType":"YulExpressionStatement","src":"1606:19:24"},{"nativeSrc":"1634:21:24","nodeType":"YulAssignment","src":"1634:21:24","value":{"arguments":[{"name":"dst","nativeSrc":"1645:3:24","nodeType":"YulIdentifier","src":"1645:3:24"},{"kind":"number","nativeSrc":"1650:4:24","nodeType":"YulLiteral","src":"1650:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1641:3:24","nodeType":"YulIdentifier","src":"1641:3:24"},"nativeSrc":"1641:14:24","nodeType":"YulFunctionCall","src":"1641:14:24"},"variableNames":[{"name":"dst","nativeSrc":"1634:3:24","nodeType":"YulIdentifier","src":"1634:3:24"}]},{"nativeSrc":"1664:52:24","nodeType":"YulVariableDeclaration","src":"1664:52:24","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"1686:6:24","nodeType":"YulIdentifier","src":"1686:6:24"},{"arguments":[{"kind":"number","nativeSrc":"1698:1:24","nodeType":"YulLiteral","src":"1698:1:24","type":"","value":"5"},{"name":"length","nativeSrc":"1701:6:24","nodeType":"YulIdentifier","src":"1701:6:24"}],"functionName":{"name":"shl","nativeSrc":"1694:3:24","nodeType":"YulIdentifier","src":"1694:3:24"},"nativeSrc":"1694:14:24","nodeType":"YulFunctionCall","src":"1694:14:24"}],"functionName":{"name":"add","nativeSrc":"1682:3:24","nodeType":"YulIdentifier","src":"1682:3:24"},"nativeSrc":"1682:27:24","nodeType":"YulFunctionCall","src":"1682:27:24"},{"kind":"number","nativeSrc":"1711:4:24","nodeType":"YulLiteral","src":"1711:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1678:3:24","nodeType":"YulIdentifier","src":"1678:3:24"},"nativeSrc":"1678:38:24","nodeType":"YulFunctionCall","src":"1678:38:24"},"variables":[{"name":"srcEnd","nativeSrc":"1668:6:24","nodeType":"YulTypedName","src":"1668:6:24","type":""}]},{"body":{"nativeSrc":"1744:16:24","nodeType":"YulBlock","src":"1744:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1753:1:24","nodeType":"YulLiteral","src":"1753:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1756:1:24","nodeType":"YulLiteral","src":"1756:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1746:6:24","nodeType":"YulIdentifier","src":"1746:6:24"},"nativeSrc":"1746:12:24","nodeType":"YulFunctionCall","src":"1746:12:24"},"nativeSrc":"1746:12:24","nodeType":"YulExpressionStatement","src":"1746:12:24"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"1731:6:24","nodeType":"YulIdentifier","src":"1731:6:24"},{"name":"end","nativeSrc":"1739:3:24","nodeType":"YulIdentifier","src":"1739:3:24"}],"functionName":{"name":"gt","nativeSrc":"1728:2:24","nodeType":"YulIdentifier","src":"1728:2:24"},"nativeSrc":"1728:15:24","nodeType":"YulFunctionCall","src":"1728:15:24"},"nativeSrc":"1725:35:24","nodeType":"YulIf","src":"1725:35:24"},{"nativeSrc":"1769:28:24","nodeType":"YulVariableDeclaration","src":"1769:28:24","value":{"arguments":[{"name":"offset","nativeSrc":"1784:6:24","nodeType":"YulIdentifier","src":"1784:6:24"},{"kind":"number","nativeSrc":"1792:4:24","nodeType":"YulLiteral","src":"1792:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1780:3:24","nodeType":"YulIdentifier","src":"1780:3:24"},"nativeSrc":"1780:17:24","nodeType":"YulFunctionCall","src":"1780:17:24"},"variables":[{"name":"src","nativeSrc":"1773:3:24","nodeType":"YulTypedName","src":"1773:3:24","type":""}]},{"body":{"nativeSrc":"1864:142:24","nodeType":"YulBlock","src":"1864:142:24","statements":[{"nativeSrc":"1878:14:24","nodeType":"YulVariableDeclaration","src":"1878:14:24","value":{"kind":"number","nativeSrc":"1891:1:24","nodeType":"YulLiteral","src":"1891:1:24","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"1882:5:24","nodeType":"YulTypedName","src":"1882:5:24","type":""}]},{"nativeSrc":"1905:26:24","nodeType":"YulAssignment","src":"1905:26:24","value":{"arguments":[{"name":"src","nativeSrc":"1927:3:24","nodeType":"YulIdentifier","src":"1927:3:24"}],"functionName":{"name":"calldataload","nativeSrc":"1914:12:24","nodeType":"YulIdentifier","src":"1914:12:24"},"nativeSrc":"1914:17:24","nodeType":"YulFunctionCall","src":"1914:17:24"},"variableNames":[{"name":"value","nativeSrc":"1905:5:24","nodeType":"YulIdentifier","src":"1905:5:24"}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"1951:3:24","nodeType":"YulIdentifier","src":"1951:3:24"},{"name":"value","nativeSrc":"1956:5:24","nodeType":"YulIdentifier","src":"1956:5:24"}],"functionName":{"name":"mstore","nativeSrc":"1944:6:24","nodeType":"YulIdentifier","src":"1944:6:24"},"nativeSrc":"1944:18:24","nodeType":"YulFunctionCall","src":"1944:18:24"},"nativeSrc":"1944:18:24","nodeType":"YulExpressionStatement","src":"1944:18:24"},{"nativeSrc":"1975:21:24","nodeType":"YulAssignment","src":"1975:21:24","value":{"arguments":[{"name":"dst","nativeSrc":"1986:3:24","nodeType":"YulIdentifier","src":"1986:3:24"},{"kind":"number","nativeSrc":"1991:4:24","nodeType":"YulLiteral","src":"1991:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1982:3:24","nodeType":"YulIdentifier","src":"1982:3:24"},"nativeSrc":"1982:14:24","nodeType":"YulFunctionCall","src":"1982:14:24"},"variableNames":[{"name":"dst","nativeSrc":"1975:3:24","nodeType":"YulIdentifier","src":"1975:3:24"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"1817:3:24","nodeType":"YulIdentifier","src":"1817:3:24"},{"name":"srcEnd","nativeSrc":"1822:6:24","nodeType":"YulIdentifier","src":"1822:6:24"}],"functionName":{"name":"lt","nativeSrc":"1814:2:24","nodeType":"YulIdentifier","src":"1814:2:24"},"nativeSrc":"1814:15:24","nodeType":"YulFunctionCall","src":"1814:15:24"},"nativeSrc":"1806:200:24","nodeType":"YulForLoop","post":{"nativeSrc":"1830:25:24","nodeType":"YulBlock","src":"1830:25:24","statements":[{"nativeSrc":"1832:21:24","nodeType":"YulAssignment","src":"1832:21:24","value":{"arguments":[{"name":"src","nativeSrc":"1843:3:24","nodeType":"YulIdentifier","src":"1843:3:24"},{"kind":"number","nativeSrc":"1848:4:24","nodeType":"YulLiteral","src":"1848:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"1839:3:24","nodeType":"YulIdentifier","src":"1839:3:24"},"nativeSrc":"1839:14:24","nodeType":"YulFunctionCall","src":"1839:14:24"},"variableNames":[{"name":"src","nativeSrc":"1832:3:24","nodeType":"YulIdentifier","src":"1832:3:24"}]}]},"pre":{"nativeSrc":"1810:3:24","nodeType":"YulBlock","src":"1810:3:24","statements":[]},"src":"1806:200:24"},{"nativeSrc":"2015:16:24","nodeType":"YulAssignment","src":"2015:16:24","value":{"name":"array_1","nativeSrc":"2024:7:24","nodeType":"YulIdentifier","src":"2024:7:24"},"variableNames":[{"name":"array","nativeSrc":"2015:5:24","nodeType":"YulIdentifier","src":"2015:5:24"}]}]},"name":"abi_decode_array_uint256_dyn","nativeSrc":"1314:723:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"1352:6:24","nodeType":"YulTypedName","src":"1352:6:24","type":""},{"name":"end","nativeSrc":"1360:3:24","nodeType":"YulTypedName","src":"1360:3:24","type":""}],"returnVariables":[{"name":"array","nativeSrc":"1368:5:24","nodeType":"YulTypedName","src":"1368:5:24","type":""}],"src":"1314:723:24"},{"body":{"nativeSrc":"2084:76:24","nodeType":"YulBlock","src":"2084:76:24","statements":[{"body":{"nativeSrc":"2138:16:24","nodeType":"YulBlock","src":"2138:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2147:1:24","nodeType":"YulLiteral","src":"2147:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"2150:1:24","nodeType":"YulLiteral","src":"2150:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2140:6:24","nodeType":"YulIdentifier","src":"2140:6:24"},"nativeSrc":"2140:12:24","nodeType":"YulFunctionCall","src":"2140:12:24"},"nativeSrc":"2140:12:24","nodeType":"YulExpressionStatement","src":"2140:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2107:5:24","nodeType":"YulIdentifier","src":"2107:5:24"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"2128:5:24","nodeType":"YulIdentifier","src":"2128:5:24"}],"functionName":{"name":"iszero","nativeSrc":"2121:6:24","nodeType":"YulIdentifier","src":"2121:6:24"},"nativeSrc":"2121:13:24","nodeType":"YulFunctionCall","src":"2121:13:24"}],"functionName":{"name":"iszero","nativeSrc":"2114:6:24","nodeType":"YulIdentifier","src":"2114:6:24"},"nativeSrc":"2114:21:24","nodeType":"YulFunctionCall","src":"2114:21:24"}],"functionName":{"name":"eq","nativeSrc":"2104:2:24","nodeType":"YulIdentifier","src":"2104:2:24"},"nativeSrc":"2104:32:24","nodeType":"YulFunctionCall","src":"2104:32:24"}],"functionName":{"name":"iszero","nativeSrc":"2097:6:24","nodeType":"YulIdentifier","src":"2097:6:24"},"nativeSrc":"2097:40:24","nodeType":"YulFunctionCall","src":"2097:40:24"},"nativeSrc":"2094:60:24","nodeType":"YulIf","src":"2094:60:24"}]},"name":"validator_revert_bool","nativeSrc":"2042:118:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"2073:5:24","nodeType":"YulTypedName","src":"2073:5:24","type":""}],"src":"2042:118:24"},{"body":{"nativeSrc":"2226:677:24","nodeType":"YulBlock","src":"2226:677:24","statements":[{"body":{"nativeSrc":"2275:16:24","nodeType":"YulBlock","src":"2275:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2284:1:24","nodeType":"YulLiteral","src":"2284:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"2287:1:24","nodeType":"YulLiteral","src":"2287:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2277:6:24","nodeType":"YulIdentifier","src":"2277:6:24"},"nativeSrc":"2277:12:24","nodeType":"YulFunctionCall","src":"2277:12:24"},"nativeSrc":"2277:12:24","nodeType":"YulExpressionStatement","src":"2277:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2254:6:24","nodeType":"YulIdentifier","src":"2254:6:24"},{"kind":"number","nativeSrc":"2262:4:24","nodeType":"YulLiteral","src":"2262:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"2250:3:24","nodeType":"YulIdentifier","src":"2250:3:24"},"nativeSrc":"2250:17:24","nodeType":"YulFunctionCall","src":"2250:17:24"},{"name":"end","nativeSrc":"2269:3:24","nodeType":"YulIdentifier","src":"2269:3:24"}],"functionName":{"name":"slt","nativeSrc":"2246:3:24","nodeType":"YulIdentifier","src":"2246:3:24"},"nativeSrc":"2246:27:24","nodeType":"YulFunctionCall","src":"2246:27:24"}],"functionName":{"name":"iszero","nativeSrc":"2239:6:24","nodeType":"YulIdentifier","src":"2239:6:24"},"nativeSrc":"2239:35:24","nodeType":"YulFunctionCall","src":"2239:35:24"},"nativeSrc":"2236:55:24","nodeType":"YulIf","src":"2236:55:24"},{"nativeSrc":"2300:34:24","nodeType":"YulVariableDeclaration","src":"2300:34:24","value":{"arguments":[{"name":"offset","nativeSrc":"2327:6:24","nodeType":"YulIdentifier","src":"2327:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"2314:12:24","nodeType":"YulIdentifier","src":"2314:12:24"},"nativeSrc":"2314:20:24","nodeType":"YulFunctionCall","src":"2314:20:24"},"variables":[{"name":"length","nativeSrc":"2304:6:24","nodeType":"YulTypedName","src":"2304:6:24","type":""}]},{"nativeSrc":"2343:75:24","nodeType":"YulVariableDeclaration","src":"2343:75:24","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"2410:6:24","nodeType":"YulIdentifier","src":"2410:6:24"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nativeSrc":"2370:39:24","nodeType":"YulIdentifier","src":"2370:39:24"},"nativeSrc":"2370:47:24","nodeType":"YulFunctionCall","src":"2370:47:24"}],"functionName":{"name":"allocate_memory","nativeSrc":"2354:15:24","nodeType":"YulIdentifier","src":"2354:15:24"},"nativeSrc":"2354:64:24","nodeType":"YulFunctionCall","src":"2354:64:24"},"variables":[{"name":"dst","nativeSrc":"2347:3:24","nodeType":"YulTypedName","src":"2347:3:24","type":""}]},{"nativeSrc":"2427:18:24","nodeType":"YulVariableDeclaration","src":"2427:18:24","value":{"name":"dst","nativeSrc":"2442:3:24","nodeType":"YulIdentifier","src":"2442:3:24"},"variables":[{"name":"array_1","nativeSrc":"2431:7:24","nodeType":"YulTypedName","src":"2431:7:24","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"2461:3:24","nodeType":"YulIdentifier","src":"2461:3:24"},{"name":"length","nativeSrc":"2466:6:24","nodeType":"YulIdentifier","src":"2466:6:24"}],"functionName":{"name":"mstore","nativeSrc":"2454:6:24","nodeType":"YulIdentifier","src":"2454:6:24"},"nativeSrc":"2454:19:24","nodeType":"YulFunctionCall","src":"2454:19:24"},"nativeSrc":"2454:19:24","nodeType":"YulExpressionStatement","src":"2454:19:24"},{"nativeSrc":"2482:21:24","nodeType":"YulAssignment","src":"2482:21:24","value":{"arguments":[{"name":"dst","nativeSrc":"2493:3:24","nodeType":"YulIdentifier","src":"2493:3:24"},{"kind":"number","nativeSrc":"2498:4:24","nodeType":"YulLiteral","src":"2498:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2489:3:24","nodeType":"YulIdentifier","src":"2489:3:24"},"nativeSrc":"2489:14:24","nodeType":"YulFunctionCall","src":"2489:14:24"},"variableNames":[{"name":"dst","nativeSrc":"2482:3:24","nodeType":"YulIdentifier","src":"2482:3:24"}]},{"nativeSrc":"2512:52:24","nodeType":"YulVariableDeclaration","src":"2512:52:24","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"2534:6:24","nodeType":"YulIdentifier","src":"2534:6:24"},{"arguments":[{"kind":"number","nativeSrc":"2546:1:24","nodeType":"YulLiteral","src":"2546:1:24","type":"","value":"5"},{"name":"length","nativeSrc":"2549:6:24","nodeType":"YulIdentifier","src":"2549:6:24"}],"functionName":{"name":"shl","nativeSrc":"2542:3:24","nodeType":"YulIdentifier","src":"2542:3:24"},"nativeSrc":"2542:14:24","nodeType":"YulFunctionCall","src":"2542:14:24"}],"functionName":{"name":"add","nativeSrc":"2530:3:24","nodeType":"YulIdentifier","src":"2530:3:24"},"nativeSrc":"2530:27:24","nodeType":"YulFunctionCall","src":"2530:27:24"},{"kind":"number","nativeSrc":"2559:4:24","nodeType":"YulLiteral","src":"2559:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2526:3:24","nodeType":"YulIdentifier","src":"2526:3:24"},"nativeSrc":"2526:38:24","nodeType":"YulFunctionCall","src":"2526:38:24"},"variables":[{"name":"srcEnd","nativeSrc":"2516:6:24","nodeType":"YulTypedName","src":"2516:6:24","type":""}]},{"body":{"nativeSrc":"2592:16:24","nodeType":"YulBlock","src":"2592:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"2601:1:24","nodeType":"YulLiteral","src":"2601:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"2604:1:24","nodeType":"YulLiteral","src":"2604:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"2594:6:24","nodeType":"YulIdentifier","src":"2594:6:24"},"nativeSrc":"2594:12:24","nodeType":"YulFunctionCall","src":"2594:12:24"},"nativeSrc":"2594:12:24","nodeType":"YulExpressionStatement","src":"2594:12:24"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"2579:6:24","nodeType":"YulIdentifier","src":"2579:6:24"},{"name":"end","nativeSrc":"2587:3:24","nodeType":"YulIdentifier","src":"2587:3:24"}],"functionName":{"name":"gt","nativeSrc":"2576:2:24","nodeType":"YulIdentifier","src":"2576:2:24"},"nativeSrc":"2576:15:24","nodeType":"YulFunctionCall","src":"2576:15:24"},"nativeSrc":"2573:35:24","nodeType":"YulIf","src":"2573:35:24"},{"nativeSrc":"2617:28:24","nodeType":"YulVariableDeclaration","src":"2617:28:24","value":{"arguments":[{"name":"offset","nativeSrc":"2632:6:24","nodeType":"YulIdentifier","src":"2632:6:24"},{"kind":"number","nativeSrc":"2640:4:24","nodeType":"YulLiteral","src":"2640:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2628:3:24","nodeType":"YulIdentifier","src":"2628:3:24"},"nativeSrc":"2628:17:24","nodeType":"YulFunctionCall","src":"2628:17:24"},"variables":[{"name":"src","nativeSrc":"2621:3:24","nodeType":"YulTypedName","src":"2621:3:24","type":""}]},{"body":{"nativeSrc":"2712:160:24","nodeType":"YulBlock","src":"2712:160:24","statements":[{"nativeSrc":"2726:30:24","nodeType":"YulVariableDeclaration","src":"2726:30:24","value":{"arguments":[{"name":"src","nativeSrc":"2752:3:24","nodeType":"YulIdentifier","src":"2752:3:24"}],"functionName":{"name":"calldataload","nativeSrc":"2739:12:24","nodeType":"YulIdentifier","src":"2739:12:24"},"nativeSrc":"2739:17:24","nodeType":"YulFunctionCall","src":"2739:17:24"},"variables":[{"name":"value","nativeSrc":"2730:5:24","nodeType":"YulTypedName","src":"2730:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"2791:5:24","nodeType":"YulIdentifier","src":"2791:5:24"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"2769:21:24","nodeType":"YulIdentifier","src":"2769:21:24"},"nativeSrc":"2769:28:24","nodeType":"YulFunctionCall","src":"2769:28:24"},"nativeSrc":"2769:28:24","nodeType":"YulExpressionStatement","src":"2769:28:24"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"2817:3:24","nodeType":"YulIdentifier","src":"2817:3:24"},{"name":"value","nativeSrc":"2822:5:24","nodeType":"YulIdentifier","src":"2822:5:24"}],"functionName":{"name":"mstore","nativeSrc":"2810:6:24","nodeType":"YulIdentifier","src":"2810:6:24"},"nativeSrc":"2810:18:24","nodeType":"YulFunctionCall","src":"2810:18:24"},"nativeSrc":"2810:18:24","nodeType":"YulExpressionStatement","src":"2810:18:24"},{"nativeSrc":"2841:21:24","nodeType":"YulAssignment","src":"2841:21:24","value":{"arguments":[{"name":"dst","nativeSrc":"2852:3:24","nodeType":"YulIdentifier","src":"2852:3:24"},{"kind":"number","nativeSrc":"2857:4:24","nodeType":"YulLiteral","src":"2857:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2848:3:24","nodeType":"YulIdentifier","src":"2848:3:24"},"nativeSrc":"2848:14:24","nodeType":"YulFunctionCall","src":"2848:14:24"},"variableNames":[{"name":"dst","nativeSrc":"2841:3:24","nodeType":"YulIdentifier","src":"2841:3:24"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"2665:3:24","nodeType":"YulIdentifier","src":"2665:3:24"},{"name":"srcEnd","nativeSrc":"2670:6:24","nodeType":"YulIdentifier","src":"2670:6:24"}],"functionName":{"name":"lt","nativeSrc":"2662:2:24","nodeType":"YulIdentifier","src":"2662:2:24"},"nativeSrc":"2662:15:24","nodeType":"YulFunctionCall","src":"2662:15:24"},"nativeSrc":"2654:218:24","nodeType":"YulForLoop","post":{"nativeSrc":"2678:25:24","nodeType":"YulBlock","src":"2678:25:24","statements":[{"nativeSrc":"2680:21:24","nodeType":"YulAssignment","src":"2680:21:24","value":{"arguments":[{"name":"src","nativeSrc":"2691:3:24","nodeType":"YulIdentifier","src":"2691:3:24"},{"kind":"number","nativeSrc":"2696:4:24","nodeType":"YulLiteral","src":"2696:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2687:3:24","nodeType":"YulIdentifier","src":"2687:3:24"},"nativeSrc":"2687:14:24","nodeType":"YulFunctionCall","src":"2687:14:24"},"variableNames":[{"name":"src","nativeSrc":"2680:3:24","nodeType":"YulIdentifier","src":"2680:3:24"}]}]},"pre":{"nativeSrc":"2658:3:24","nodeType":"YulBlock","src":"2658:3:24","statements":[]},"src":"2654:218:24"},{"nativeSrc":"2881:16:24","nodeType":"YulAssignment","src":"2881:16:24","value":{"name":"array_1","nativeSrc":"2890:7:24","nodeType":"YulIdentifier","src":"2890:7:24"},"variableNames":[{"name":"array","nativeSrc":"2881:5:24","nodeType":"YulIdentifier","src":"2881:5:24"}]}]},"name":"abi_decode_array_bool_dyn","nativeSrc":"2165:738:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"2200:6:24","nodeType":"YulTypedName","src":"2200:6:24","type":""},{"name":"end","nativeSrc":"2208:3:24","nodeType":"YulTypedName","src":"2208:3:24","type":""}],"returnVariables":[{"name":"array","nativeSrc":"2216:5:24","nodeType":"YulTypedName","src":"2216:5:24","type":""}],"src":"2165:738:24"},{"body":{"nativeSrc":"3168:1052:24","nodeType":"YulBlock","src":"3168:1052:24","statements":[{"body":{"nativeSrc":"3215:16:24","nodeType":"YulBlock","src":"3215:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3224:1:24","nodeType":"YulLiteral","src":"3224:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"3227:1:24","nodeType":"YulLiteral","src":"3227:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3217:6:24","nodeType":"YulIdentifier","src":"3217:6:24"},"nativeSrc":"3217:12:24","nodeType":"YulFunctionCall","src":"3217:12:24"},"nativeSrc":"3217:12:24","nodeType":"YulExpressionStatement","src":"3217:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"3189:7:24","nodeType":"YulIdentifier","src":"3189:7:24"},{"name":"headStart","nativeSrc":"3198:9:24","nodeType":"YulIdentifier","src":"3198:9:24"}],"functionName":{"name":"sub","nativeSrc":"3185:3:24","nodeType":"YulIdentifier","src":"3185:3:24"},"nativeSrc":"3185:23:24","nodeType":"YulFunctionCall","src":"3185:23:24"},{"kind":"number","nativeSrc":"3210:3:24","nodeType":"YulLiteral","src":"3210:3:24","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"3181:3:24","nodeType":"YulIdentifier","src":"3181:3:24"},"nativeSrc":"3181:33:24","nodeType":"YulFunctionCall","src":"3181:33:24"},"nativeSrc":"3178:53:24","nodeType":"YulIf","src":"3178:53:24"},{"nativeSrc":"3240:37:24","nodeType":"YulVariableDeclaration","src":"3240:37:24","value":{"arguments":[{"name":"headStart","nativeSrc":"3267:9:24","nodeType":"YulIdentifier","src":"3267:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"3254:12:24","nodeType":"YulIdentifier","src":"3254:12:24"},"nativeSrc":"3254:23:24","nodeType":"YulFunctionCall","src":"3254:23:24"},"variables":[{"name":"offset","nativeSrc":"3244:6:24","nodeType":"YulTypedName","src":"3244:6:24","type":""}]},{"body":{"nativeSrc":"3320:16:24","nodeType":"YulBlock","src":"3320:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3329:1:24","nodeType":"YulLiteral","src":"3329:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"3332:1:24","nodeType":"YulLiteral","src":"3332:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3322:6:24","nodeType":"YulIdentifier","src":"3322:6:24"},"nativeSrc":"3322:12:24","nodeType":"YulFunctionCall","src":"3322:12:24"},"nativeSrc":"3322:12:24","nodeType":"YulExpressionStatement","src":"3322:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"3292:6:24","nodeType":"YulIdentifier","src":"3292:6:24"},{"kind":"number","nativeSrc":"3300:18:24","nodeType":"YulLiteral","src":"3300:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3289:2:24","nodeType":"YulIdentifier","src":"3289:2:24"},"nativeSrc":"3289:30:24","nodeType":"YulFunctionCall","src":"3289:30:24"},"nativeSrc":"3286:50:24","nodeType":"YulIf","src":"3286:50:24"},{"nativeSrc":"3345:71:24","nodeType":"YulAssignment","src":"3345:71:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3388:9:24","nodeType":"YulIdentifier","src":"3388:9:24"},{"name":"offset","nativeSrc":"3399:6:24","nodeType":"YulIdentifier","src":"3399:6:24"}],"functionName":{"name":"add","nativeSrc":"3384:3:24","nodeType":"YulIdentifier","src":"3384:3:24"},"nativeSrc":"3384:22:24","nodeType":"YulFunctionCall","src":"3384:22:24"},{"name":"dataEnd","nativeSrc":"3408:7:24","nodeType":"YulIdentifier","src":"3408:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"3355:28:24","nodeType":"YulIdentifier","src":"3355:28:24"},"nativeSrc":"3355:61:24","nodeType":"YulFunctionCall","src":"3355:61:24"},"variableNames":[{"name":"value0","nativeSrc":"3345:6:24","nodeType":"YulIdentifier","src":"3345:6:24"}]},{"nativeSrc":"3425:48:24","nodeType":"YulVariableDeclaration","src":"3425:48:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3458:9:24","nodeType":"YulIdentifier","src":"3458:9:24"},{"kind":"number","nativeSrc":"3469:2:24","nodeType":"YulLiteral","src":"3469:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"3454:3:24","nodeType":"YulIdentifier","src":"3454:3:24"},"nativeSrc":"3454:18:24","nodeType":"YulFunctionCall","src":"3454:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"3441:12:24","nodeType":"YulIdentifier","src":"3441:12:24"},"nativeSrc":"3441:32:24","nodeType":"YulFunctionCall","src":"3441:32:24"},"variables":[{"name":"offset_1","nativeSrc":"3429:8:24","nodeType":"YulTypedName","src":"3429:8:24","type":""}]},{"body":{"nativeSrc":"3518:16:24","nodeType":"YulBlock","src":"3518:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3527:1:24","nodeType":"YulLiteral","src":"3527:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"3530:1:24","nodeType":"YulLiteral","src":"3530:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3520:6:24","nodeType":"YulIdentifier","src":"3520:6:24"},"nativeSrc":"3520:12:24","nodeType":"YulFunctionCall","src":"3520:12:24"},"nativeSrc":"3520:12:24","nodeType":"YulExpressionStatement","src":"3520:12:24"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"3488:8:24","nodeType":"YulIdentifier","src":"3488:8:24"},{"kind":"number","nativeSrc":"3498:18:24","nodeType":"YulLiteral","src":"3498:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3485:2:24","nodeType":"YulIdentifier","src":"3485:2:24"},"nativeSrc":"3485:32:24","nodeType":"YulFunctionCall","src":"3485:32:24"},"nativeSrc":"3482:52:24","nodeType":"YulIf","src":"3482:52:24"},{"nativeSrc":"3543:73:24","nodeType":"YulAssignment","src":"3543:73:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3586:9:24","nodeType":"YulIdentifier","src":"3586:9:24"},{"name":"offset_1","nativeSrc":"3597:8:24","nodeType":"YulIdentifier","src":"3597:8:24"}],"functionName":{"name":"add","nativeSrc":"3582:3:24","nodeType":"YulIdentifier","src":"3582:3:24"},"nativeSrc":"3582:24:24","nodeType":"YulFunctionCall","src":"3582:24:24"},{"name":"dataEnd","nativeSrc":"3608:7:24","nodeType":"YulIdentifier","src":"3608:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"3553:28:24","nodeType":"YulIdentifier","src":"3553:28:24"},"nativeSrc":"3553:63:24","nodeType":"YulFunctionCall","src":"3553:63:24"},"variableNames":[{"name":"value1","nativeSrc":"3543:6:24","nodeType":"YulIdentifier","src":"3543:6:24"}]},{"nativeSrc":"3625:48:24","nodeType":"YulVariableDeclaration","src":"3625:48:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3658:9:24","nodeType":"YulIdentifier","src":"3658:9:24"},{"kind":"number","nativeSrc":"3669:2:24","nodeType":"YulLiteral","src":"3669:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"3654:3:24","nodeType":"YulIdentifier","src":"3654:3:24"},"nativeSrc":"3654:18:24","nodeType":"YulFunctionCall","src":"3654:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"3641:12:24","nodeType":"YulIdentifier","src":"3641:12:24"},"nativeSrc":"3641:32:24","nodeType":"YulFunctionCall","src":"3641:32:24"},"variables":[{"name":"offset_2","nativeSrc":"3629:8:24","nodeType":"YulTypedName","src":"3629:8:24","type":""}]},{"body":{"nativeSrc":"3718:16:24","nodeType":"YulBlock","src":"3718:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3727:1:24","nodeType":"YulLiteral","src":"3727:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"3730:1:24","nodeType":"YulLiteral","src":"3730:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3720:6:24","nodeType":"YulIdentifier","src":"3720:6:24"},"nativeSrc":"3720:12:24","nodeType":"YulFunctionCall","src":"3720:12:24"},"nativeSrc":"3720:12:24","nodeType":"YulExpressionStatement","src":"3720:12:24"}]},"condition":{"arguments":[{"name":"offset_2","nativeSrc":"3688:8:24","nodeType":"YulIdentifier","src":"3688:8:24"},{"kind":"number","nativeSrc":"3698:18:24","nodeType":"YulLiteral","src":"3698:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3685:2:24","nodeType":"YulIdentifier","src":"3685:2:24"},"nativeSrc":"3685:32:24","nodeType":"YulFunctionCall","src":"3685:32:24"},"nativeSrc":"3682:52:24","nodeType":"YulIf","src":"3682:52:24"},{"nativeSrc":"3743:73:24","nodeType":"YulAssignment","src":"3743:73:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3786:9:24","nodeType":"YulIdentifier","src":"3786:9:24"},{"name":"offset_2","nativeSrc":"3797:8:24","nodeType":"YulIdentifier","src":"3797:8:24"}],"functionName":{"name":"add","nativeSrc":"3782:3:24","nodeType":"YulIdentifier","src":"3782:3:24"},"nativeSrc":"3782:24:24","nodeType":"YulFunctionCall","src":"3782:24:24"},{"name":"dataEnd","nativeSrc":"3808:7:24","nodeType":"YulIdentifier","src":"3808:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"3753:28:24","nodeType":"YulIdentifier","src":"3753:28:24"},"nativeSrc":"3753:63:24","nodeType":"YulFunctionCall","src":"3753:63:24"},"variableNames":[{"name":"value2","nativeSrc":"3743:6:24","nodeType":"YulIdentifier","src":"3743:6:24"}]},{"nativeSrc":"3825:48:24","nodeType":"YulVariableDeclaration","src":"3825:48:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3858:9:24","nodeType":"YulIdentifier","src":"3858:9:24"},{"kind":"number","nativeSrc":"3869:2:24","nodeType":"YulLiteral","src":"3869:2:24","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"3854:3:24","nodeType":"YulIdentifier","src":"3854:3:24"},"nativeSrc":"3854:18:24","nodeType":"YulFunctionCall","src":"3854:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"3841:12:24","nodeType":"YulIdentifier","src":"3841:12:24"},"nativeSrc":"3841:32:24","nodeType":"YulFunctionCall","src":"3841:32:24"},"variables":[{"name":"offset_3","nativeSrc":"3829:8:24","nodeType":"YulTypedName","src":"3829:8:24","type":""}]},{"body":{"nativeSrc":"3918:16:24","nodeType":"YulBlock","src":"3918:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3927:1:24","nodeType":"YulLiteral","src":"3927:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"3930:1:24","nodeType":"YulLiteral","src":"3930:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"3920:6:24","nodeType":"YulIdentifier","src":"3920:6:24"},"nativeSrc":"3920:12:24","nodeType":"YulFunctionCall","src":"3920:12:24"},"nativeSrc":"3920:12:24","nodeType":"YulExpressionStatement","src":"3920:12:24"}]},"condition":{"arguments":[{"name":"offset_3","nativeSrc":"3888:8:24","nodeType":"YulIdentifier","src":"3888:8:24"},{"kind":"number","nativeSrc":"3898:18:24","nodeType":"YulLiteral","src":"3898:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"3885:2:24","nodeType":"YulIdentifier","src":"3885:2:24"},"nativeSrc":"3885:32:24","nodeType":"YulFunctionCall","src":"3885:32:24"},"nativeSrc":"3882:52:24","nodeType":"YulIf","src":"3882:52:24"},{"nativeSrc":"3943:73:24","nodeType":"YulAssignment","src":"3943:73:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"3986:9:24","nodeType":"YulIdentifier","src":"3986:9:24"},{"name":"offset_3","nativeSrc":"3997:8:24","nodeType":"YulIdentifier","src":"3997:8:24"}],"functionName":{"name":"add","nativeSrc":"3982:3:24","nodeType":"YulIdentifier","src":"3982:3:24"},"nativeSrc":"3982:24:24","nodeType":"YulFunctionCall","src":"3982:24:24"},{"name":"dataEnd","nativeSrc":"4008:7:24","nodeType":"YulIdentifier","src":"4008:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"3953:28:24","nodeType":"YulIdentifier","src":"3953:28:24"},"nativeSrc":"3953:63:24","nodeType":"YulFunctionCall","src":"3953:63:24"},"variableNames":[{"name":"value3","nativeSrc":"3943:6:24","nodeType":"YulIdentifier","src":"3943:6:24"}]},{"nativeSrc":"4025:49:24","nodeType":"YulVariableDeclaration","src":"4025:49:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4058:9:24","nodeType":"YulIdentifier","src":"4058:9:24"},{"kind":"number","nativeSrc":"4069:3:24","nodeType":"YulLiteral","src":"4069:3:24","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"4054:3:24","nodeType":"YulIdentifier","src":"4054:3:24"},"nativeSrc":"4054:19:24","nodeType":"YulFunctionCall","src":"4054:19:24"}],"functionName":{"name":"calldataload","nativeSrc":"4041:12:24","nodeType":"YulIdentifier","src":"4041:12:24"},"nativeSrc":"4041:33:24","nodeType":"YulFunctionCall","src":"4041:33:24"},"variables":[{"name":"offset_4","nativeSrc":"4029:8:24","nodeType":"YulTypedName","src":"4029:8:24","type":""}]},{"body":{"nativeSrc":"4119:16:24","nodeType":"YulBlock","src":"4119:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4128:1:24","nodeType":"YulLiteral","src":"4128:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"4131:1:24","nodeType":"YulLiteral","src":"4131:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4121:6:24","nodeType":"YulIdentifier","src":"4121:6:24"},"nativeSrc":"4121:12:24","nodeType":"YulFunctionCall","src":"4121:12:24"},"nativeSrc":"4121:12:24","nodeType":"YulExpressionStatement","src":"4121:12:24"}]},"condition":{"arguments":[{"name":"offset_4","nativeSrc":"4089:8:24","nodeType":"YulIdentifier","src":"4089:8:24"},{"kind":"number","nativeSrc":"4099:18:24","nodeType":"YulLiteral","src":"4099:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4086:2:24","nodeType":"YulIdentifier","src":"4086:2:24"},"nativeSrc":"4086:32:24","nodeType":"YulFunctionCall","src":"4086:32:24"},"nativeSrc":"4083:52:24","nodeType":"YulIf","src":"4083:52:24"},{"nativeSrc":"4144:70:24","nodeType":"YulAssignment","src":"4144:70:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4184:9:24","nodeType":"YulIdentifier","src":"4184:9:24"},{"name":"offset_4","nativeSrc":"4195:8:24","nodeType":"YulIdentifier","src":"4195:8:24"}],"functionName":{"name":"add","nativeSrc":"4180:3:24","nodeType":"YulIdentifier","src":"4180:3:24"},"nativeSrc":"4180:24:24","nodeType":"YulFunctionCall","src":"4180:24:24"},{"name":"dataEnd","nativeSrc":"4206:7:24","nodeType":"YulIdentifier","src":"4206:7:24"}],"functionName":{"name":"abi_decode_array_bool_dyn","nativeSrc":"4154:25:24","nodeType":"YulIdentifier","src":"4154:25:24"},"nativeSrc":"4154:60:24","nodeType":"YulFunctionCall","src":"4154:60:24"},"variableNames":[{"name":"value4","nativeSrc":"4144:6:24","nodeType":"YulIdentifier","src":"4144:6:24"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_bool_$dyn_memory_ptr","nativeSrc":"2908:1312:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"3102:9:24","nodeType":"YulTypedName","src":"3102:9:24","type":""},{"name":"dataEnd","nativeSrc":"3113:7:24","nodeType":"YulTypedName","src":"3113:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"3125:6:24","nodeType":"YulTypedName","src":"3125:6:24","type":""},{"name":"value1","nativeSrc":"3133:6:24","nodeType":"YulTypedName","src":"3133:6:24","type":""},{"name":"value2","nativeSrc":"3141:6:24","nodeType":"YulTypedName","src":"3141:6:24","type":""},{"name":"value3","nativeSrc":"3149:6:24","nodeType":"YulTypedName","src":"3149:6:24","type":""},{"name":"value4","nativeSrc":"3157:6:24","nodeType":"YulTypedName","src":"3157:6:24","type":""}],"src":"2908:1312:24"},{"body":{"nativeSrc":"4295:177:24","nodeType":"YulBlock","src":"4295:177:24","statements":[{"body":{"nativeSrc":"4341:16:24","nodeType":"YulBlock","src":"4341:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4350:1:24","nodeType":"YulLiteral","src":"4350:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"4353:1:24","nodeType":"YulLiteral","src":"4353:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4343:6:24","nodeType":"YulIdentifier","src":"4343:6:24"},"nativeSrc":"4343:12:24","nodeType":"YulFunctionCall","src":"4343:12:24"},"nativeSrc":"4343:12:24","nodeType":"YulExpressionStatement","src":"4343:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4316:7:24","nodeType":"YulIdentifier","src":"4316:7:24"},{"name":"headStart","nativeSrc":"4325:9:24","nodeType":"YulIdentifier","src":"4325:9:24"}],"functionName":{"name":"sub","nativeSrc":"4312:3:24","nodeType":"YulIdentifier","src":"4312:3:24"},"nativeSrc":"4312:23:24","nodeType":"YulFunctionCall","src":"4312:23:24"},{"kind":"number","nativeSrc":"4337:2:24","nodeType":"YulLiteral","src":"4337:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4308:3:24","nodeType":"YulIdentifier","src":"4308:3:24"},"nativeSrc":"4308:32:24","nodeType":"YulFunctionCall","src":"4308:32:24"},"nativeSrc":"4305:52:24","nodeType":"YulIf","src":"4305:52:24"},{"nativeSrc":"4366:36:24","nodeType":"YulVariableDeclaration","src":"4366:36:24","value":{"arguments":[{"name":"headStart","nativeSrc":"4392:9:24","nodeType":"YulIdentifier","src":"4392:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"4379:12:24","nodeType":"YulIdentifier","src":"4379:12:24"},"nativeSrc":"4379:23:24","nodeType":"YulFunctionCall","src":"4379:23:24"},"variables":[{"name":"value","nativeSrc":"4370:5:24","nodeType":"YulTypedName","src":"4370:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"4436:5:24","nodeType":"YulIdentifier","src":"4436:5:24"}],"functionName":{"name":"validator_revert_address","nativeSrc":"4411:24:24","nodeType":"YulIdentifier","src":"4411:24:24"},"nativeSrc":"4411:31:24","nodeType":"YulFunctionCall","src":"4411:31:24"},"nativeSrc":"4411:31:24","nodeType":"YulExpressionStatement","src":"4411:31:24"},{"nativeSrc":"4451:15:24","nodeType":"YulAssignment","src":"4451:15:24","value":{"name":"value","nativeSrc":"4461:5:24","nodeType":"YulIdentifier","src":"4461:5:24"},"variableNames":[{"name":"value0","nativeSrc":"4451:6:24","nodeType":"YulIdentifier","src":"4451:6:24"}]}]},"name":"abi_decode_tuple_t_address","nativeSrc":"4225:247:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4261:9:24","nodeType":"YulTypedName","src":"4261:9:24","type":""},{"name":"dataEnd","nativeSrc":"4272:7:24","nodeType":"YulTypedName","src":"4272:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4284:6:24","nodeType":"YulTypedName","src":"4284:6:24","type":""}],"src":"4225:247:24"},{"body":{"nativeSrc":"4572:253:24","nodeType":"YulBlock","src":"4572:253:24","statements":[{"body":{"nativeSrc":"4618:16:24","nodeType":"YulBlock","src":"4618:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4627:1:24","nodeType":"YulLiteral","src":"4627:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"4630:1:24","nodeType":"YulLiteral","src":"4630:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4620:6:24","nodeType":"YulIdentifier","src":"4620:6:24"},"nativeSrc":"4620:12:24","nodeType":"YulFunctionCall","src":"4620:12:24"},"nativeSrc":"4620:12:24","nodeType":"YulExpressionStatement","src":"4620:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4593:7:24","nodeType":"YulIdentifier","src":"4593:7:24"},{"name":"headStart","nativeSrc":"4602:9:24","nodeType":"YulIdentifier","src":"4602:9:24"}],"functionName":{"name":"sub","nativeSrc":"4589:3:24","nodeType":"YulIdentifier","src":"4589:3:24"},"nativeSrc":"4589:23:24","nodeType":"YulFunctionCall","src":"4589:23:24"},{"kind":"number","nativeSrc":"4614:2:24","nodeType":"YulLiteral","src":"4614:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"4585:3:24","nodeType":"YulIdentifier","src":"4585:3:24"},"nativeSrc":"4585:32:24","nodeType":"YulFunctionCall","src":"4585:32:24"},"nativeSrc":"4582:52:24","nodeType":"YulIf","src":"4582:52:24"},{"nativeSrc":"4643:37:24","nodeType":"YulVariableDeclaration","src":"4643:37:24","value":{"arguments":[{"name":"headStart","nativeSrc":"4670:9:24","nodeType":"YulIdentifier","src":"4670:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"4657:12:24","nodeType":"YulIdentifier","src":"4657:12:24"},"nativeSrc":"4657:23:24","nodeType":"YulFunctionCall","src":"4657:23:24"},"variables":[{"name":"offset","nativeSrc":"4647:6:24","nodeType":"YulTypedName","src":"4647:6:24","type":""}]},{"body":{"nativeSrc":"4723:16:24","nodeType":"YulBlock","src":"4723:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4732:1:24","nodeType":"YulLiteral","src":"4732:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"4735:1:24","nodeType":"YulLiteral","src":"4735:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4725:6:24","nodeType":"YulIdentifier","src":"4725:6:24"},"nativeSrc":"4725:12:24","nodeType":"YulFunctionCall","src":"4725:12:24"},"nativeSrc":"4725:12:24","nodeType":"YulExpressionStatement","src":"4725:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"4695:6:24","nodeType":"YulIdentifier","src":"4695:6:24"},{"kind":"number","nativeSrc":"4703:18:24","nodeType":"YulLiteral","src":"4703:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"4692:2:24","nodeType":"YulIdentifier","src":"4692:2:24"},"nativeSrc":"4692:30:24","nodeType":"YulFunctionCall","src":"4692:30:24"},"nativeSrc":"4689:50:24","nodeType":"YulIf","src":"4689:50:24"},{"nativeSrc":"4748:71:24","nodeType":"YulAssignment","src":"4748:71:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"4791:9:24","nodeType":"YulIdentifier","src":"4791:9:24"},{"name":"offset","nativeSrc":"4802:6:24","nodeType":"YulIdentifier","src":"4802:6:24"}],"functionName":{"name":"add","nativeSrc":"4787:3:24","nodeType":"YulIdentifier","src":"4787:3:24"},"nativeSrc":"4787:22:24","nodeType":"YulFunctionCall","src":"4787:22:24"},{"name":"dataEnd","nativeSrc":"4811:7:24","nodeType":"YulIdentifier","src":"4811:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"4758:28:24","nodeType":"YulIdentifier","src":"4758:28:24"},"nativeSrc":"4758:61:24","nodeType":"YulFunctionCall","src":"4758:61:24"},"variableNames":[{"name":"value0","nativeSrc":"4748:6:24","nodeType":"YulIdentifier","src":"4748:6:24"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"4477:348:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4538:9:24","nodeType":"YulTypedName","src":"4538:9:24","type":""},{"name":"dataEnd","nativeSrc":"4549:7:24","nodeType":"YulTypedName","src":"4549:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4561:6:24","nodeType":"YulTypedName","src":"4561:6:24","type":""}],"src":"4477:348:24"},{"body":{"nativeSrc":"4934:383:24","nodeType":"YulBlock","src":"4934:383:24","statements":[{"body":{"nativeSrc":"4980:16:24","nodeType":"YulBlock","src":"4980:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"4989:1:24","nodeType":"YulLiteral","src":"4989:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"4992:1:24","nodeType":"YulLiteral","src":"4992:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"4982:6:24","nodeType":"YulIdentifier","src":"4982:6:24"},"nativeSrc":"4982:12:24","nodeType":"YulFunctionCall","src":"4982:12:24"},"nativeSrc":"4982:12:24","nodeType":"YulExpressionStatement","src":"4982:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"4955:7:24","nodeType":"YulIdentifier","src":"4955:7:24"},{"name":"headStart","nativeSrc":"4964:9:24","nodeType":"YulIdentifier","src":"4964:9:24"}],"functionName":{"name":"sub","nativeSrc":"4951:3:24","nodeType":"YulIdentifier","src":"4951:3:24"},"nativeSrc":"4951:23:24","nodeType":"YulFunctionCall","src":"4951:23:24"},{"kind":"number","nativeSrc":"4976:2:24","nodeType":"YulLiteral","src":"4976:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"4947:3:24","nodeType":"YulIdentifier","src":"4947:3:24"},"nativeSrc":"4947:32:24","nodeType":"YulFunctionCall","src":"4947:32:24"},"nativeSrc":"4944:52:24","nodeType":"YulIf","src":"4944:52:24"},{"nativeSrc":"5005:14:24","nodeType":"YulVariableDeclaration","src":"5005:14:24","value":{"kind":"number","nativeSrc":"5018:1:24","nodeType":"YulLiteral","src":"5018:1:24","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5009:5:24","nodeType":"YulTypedName","src":"5009:5:24","type":""}]},{"nativeSrc":"5028:32:24","nodeType":"YulAssignment","src":"5028:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"5050:9:24","nodeType":"YulIdentifier","src":"5050:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"5037:12:24","nodeType":"YulIdentifier","src":"5037:12:24"},"nativeSrc":"5037:23:24","nodeType":"YulFunctionCall","src":"5037:23:24"},"variableNames":[{"name":"value","nativeSrc":"5028:5:24","nodeType":"YulIdentifier","src":"5028:5:24"}]},{"nativeSrc":"5069:15:24","nodeType":"YulAssignment","src":"5069:15:24","value":{"name":"value","nativeSrc":"5079:5:24","nodeType":"YulIdentifier","src":"5079:5:24"},"variableNames":[{"name":"value0","nativeSrc":"5069:6:24","nodeType":"YulIdentifier","src":"5069:6:24"}]},{"nativeSrc":"5093:47:24","nodeType":"YulVariableDeclaration","src":"5093:47:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5125:9:24","nodeType":"YulIdentifier","src":"5125:9:24"},{"kind":"number","nativeSrc":"5136:2:24","nodeType":"YulLiteral","src":"5136:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"5121:3:24","nodeType":"YulIdentifier","src":"5121:3:24"},"nativeSrc":"5121:18:24","nodeType":"YulFunctionCall","src":"5121:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"5108:12:24","nodeType":"YulIdentifier","src":"5108:12:24"},"nativeSrc":"5108:32:24","nodeType":"YulFunctionCall","src":"5108:32:24"},"variables":[{"name":"value_1","nativeSrc":"5097:7:24","nodeType":"YulTypedName","src":"5097:7:24","type":""}]},{"expression":{"arguments":[{"name":"value_1","nativeSrc":"5174:7:24","nodeType":"YulIdentifier","src":"5174:7:24"}],"functionName":{"name":"validator_revert_address","nativeSrc":"5149:24:24","nodeType":"YulIdentifier","src":"5149:24:24"},"nativeSrc":"5149:33:24","nodeType":"YulFunctionCall","src":"5149:33:24"},"nativeSrc":"5149:33:24","nodeType":"YulExpressionStatement","src":"5149:33:24"},{"nativeSrc":"5191:17:24","nodeType":"YulAssignment","src":"5191:17:24","value":{"name":"value_1","nativeSrc":"5201:7:24","nodeType":"YulIdentifier","src":"5201:7:24"},"variableNames":[{"name":"value1","nativeSrc":"5191:6:24","nodeType":"YulIdentifier","src":"5191:6:24"}]},{"nativeSrc":"5217:16:24","nodeType":"YulVariableDeclaration","src":"5217:16:24","value":{"kind":"number","nativeSrc":"5232:1:24","nodeType":"YulLiteral","src":"5232:1:24","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"5221:7:24","nodeType":"YulTypedName","src":"5221:7:24","type":""}]},{"nativeSrc":"5242:43:24","nodeType":"YulAssignment","src":"5242:43:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"5270:9:24","nodeType":"YulIdentifier","src":"5270:9:24"},{"kind":"number","nativeSrc":"5281:2:24","nodeType":"YulLiteral","src":"5281:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"5266:3:24","nodeType":"YulIdentifier","src":"5266:3:24"},"nativeSrc":"5266:18:24","nodeType":"YulFunctionCall","src":"5266:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"5253:12:24","nodeType":"YulIdentifier","src":"5253:12:24"},"nativeSrc":"5253:32:24","nodeType":"YulFunctionCall","src":"5253:32:24"},"variableNames":[{"name":"value_2","nativeSrc":"5242:7:24","nodeType":"YulIdentifier","src":"5242:7:24"}]},{"nativeSrc":"5294:17:24","nodeType":"YulAssignment","src":"5294:17:24","value":{"name":"value_2","nativeSrc":"5304:7:24","nodeType":"YulIdentifier","src":"5304:7:24"},"variableNames":[{"name":"value2","nativeSrc":"5294:6:24","nodeType":"YulIdentifier","src":"5294:6:24"}]}]},"name":"abi_decode_tuple_t_uint256t_addresst_uint256","nativeSrc":"4830:487:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"4884:9:24","nodeType":"YulTypedName","src":"4884:9:24","type":""},{"name":"dataEnd","nativeSrc":"4895:7:24","nodeType":"YulTypedName","src":"4895:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"4907:6:24","nodeType":"YulTypedName","src":"4907:6:24","type":""},{"name":"value1","nativeSrc":"4915:6:24","nodeType":"YulTypedName","src":"4915:6:24","type":""},{"name":"value2","nativeSrc":"4923:6:24","nodeType":"YulTypedName","src":"4923:6:24","type":""}],"src":"4830:487:24"},{"body":{"nativeSrc":"5392:156:24","nodeType":"YulBlock","src":"5392:156:24","statements":[{"body":{"nativeSrc":"5438:16:24","nodeType":"YulBlock","src":"5438:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5447:1:24","nodeType":"YulLiteral","src":"5447:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"5450:1:24","nodeType":"YulLiteral","src":"5450:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5440:6:24","nodeType":"YulIdentifier","src":"5440:6:24"},"nativeSrc":"5440:12:24","nodeType":"YulFunctionCall","src":"5440:12:24"},"nativeSrc":"5440:12:24","nodeType":"YulExpressionStatement","src":"5440:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"5413:7:24","nodeType":"YulIdentifier","src":"5413:7:24"},{"name":"headStart","nativeSrc":"5422:9:24","nodeType":"YulIdentifier","src":"5422:9:24"}],"functionName":{"name":"sub","nativeSrc":"5409:3:24","nodeType":"YulIdentifier","src":"5409:3:24"},"nativeSrc":"5409:23:24","nodeType":"YulFunctionCall","src":"5409:23:24"},{"kind":"number","nativeSrc":"5434:2:24","nodeType":"YulLiteral","src":"5434:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"5405:3:24","nodeType":"YulIdentifier","src":"5405:3:24"},"nativeSrc":"5405:32:24","nodeType":"YulFunctionCall","src":"5405:32:24"},"nativeSrc":"5402:52:24","nodeType":"YulIf","src":"5402:52:24"},{"nativeSrc":"5463:14:24","nodeType":"YulVariableDeclaration","src":"5463:14:24","value":{"kind":"number","nativeSrc":"5476:1:24","nodeType":"YulLiteral","src":"5476:1:24","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"5467:5:24","nodeType":"YulTypedName","src":"5467:5:24","type":""}]},{"nativeSrc":"5486:32:24","nodeType":"YulAssignment","src":"5486:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"5508:9:24","nodeType":"YulIdentifier","src":"5508:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"5495:12:24","nodeType":"YulIdentifier","src":"5495:12:24"},"nativeSrc":"5495:23:24","nodeType":"YulFunctionCall","src":"5495:23:24"},"variableNames":[{"name":"value","nativeSrc":"5486:5:24","nodeType":"YulIdentifier","src":"5486:5:24"}]},{"nativeSrc":"5527:15:24","nodeType":"YulAssignment","src":"5527:15:24","value":{"name":"value","nativeSrc":"5537:5:24","nodeType":"YulIdentifier","src":"5537:5:24"},"variableNames":[{"name":"value0","nativeSrc":"5527:6:24","nodeType":"YulIdentifier","src":"5527:6:24"}]}]},"name":"abi_decode_tuple_t_uint256","nativeSrc":"5322:226:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"5358:9:24","nodeType":"YulTypedName","src":"5358:9:24","type":""},{"name":"dataEnd","nativeSrc":"5369:7:24","nodeType":"YulTypedName","src":"5369:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"5381:6:24","nodeType":"YulTypedName","src":"5381:6:24","type":""}],"src":"5322:226:24"},{"body":{"nativeSrc":"5617:680:24","nodeType":"YulBlock","src":"5617:680:24","statements":[{"body":{"nativeSrc":"5666:16:24","nodeType":"YulBlock","src":"5666:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5675:1:24","nodeType":"YulLiteral","src":"5675:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"5678:1:24","nodeType":"YulLiteral","src":"5678:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5668:6:24","nodeType":"YulIdentifier","src":"5668:6:24"},"nativeSrc":"5668:12:24","nodeType":"YulFunctionCall","src":"5668:12:24"},"nativeSrc":"5668:12:24","nodeType":"YulExpressionStatement","src":"5668:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"5645:6:24","nodeType":"YulIdentifier","src":"5645:6:24"},{"kind":"number","nativeSrc":"5653:4:24","nodeType":"YulLiteral","src":"5653:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"5641:3:24","nodeType":"YulIdentifier","src":"5641:3:24"},"nativeSrc":"5641:17:24","nodeType":"YulFunctionCall","src":"5641:17:24"},{"name":"end","nativeSrc":"5660:3:24","nodeType":"YulIdentifier","src":"5660:3:24"}],"functionName":{"name":"slt","nativeSrc":"5637:3:24","nodeType":"YulIdentifier","src":"5637:3:24"},"nativeSrc":"5637:27:24","nodeType":"YulFunctionCall","src":"5637:27:24"}],"functionName":{"name":"iszero","nativeSrc":"5630:6:24","nodeType":"YulIdentifier","src":"5630:6:24"},"nativeSrc":"5630:35:24","nodeType":"YulFunctionCall","src":"5630:35:24"},"nativeSrc":"5627:55:24","nodeType":"YulIf","src":"5627:55:24"},{"nativeSrc":"5691:34:24","nodeType":"YulVariableDeclaration","src":"5691:34:24","value":{"arguments":[{"name":"offset","nativeSrc":"5718:6:24","nodeType":"YulIdentifier","src":"5718:6:24"}],"functionName":{"name":"calldataload","nativeSrc":"5705:12:24","nodeType":"YulIdentifier","src":"5705:12:24"},"nativeSrc":"5705:20:24","nodeType":"YulFunctionCall","src":"5705:20:24"},"variables":[{"name":"length","nativeSrc":"5695:6:24","nodeType":"YulTypedName","src":"5695:6:24","type":""}]},{"nativeSrc":"5734:75:24","nodeType":"YulVariableDeclaration","src":"5734:75:24","value":{"arguments":[{"arguments":[{"name":"length","nativeSrc":"5801:6:24","nodeType":"YulIdentifier","src":"5801:6:24"}],"functionName":{"name":"array_allocation_size_array_uint256_dyn","nativeSrc":"5761:39:24","nodeType":"YulIdentifier","src":"5761:39:24"},"nativeSrc":"5761:47:24","nodeType":"YulFunctionCall","src":"5761:47:24"}],"functionName":{"name":"allocate_memory","nativeSrc":"5745:15:24","nodeType":"YulIdentifier","src":"5745:15:24"},"nativeSrc":"5745:64:24","nodeType":"YulFunctionCall","src":"5745:64:24"},"variables":[{"name":"dst","nativeSrc":"5738:3:24","nodeType":"YulTypedName","src":"5738:3:24","type":""}]},{"nativeSrc":"5818:18:24","nodeType":"YulVariableDeclaration","src":"5818:18:24","value":{"name":"dst","nativeSrc":"5833:3:24","nodeType":"YulIdentifier","src":"5833:3:24"},"variables":[{"name":"array_1","nativeSrc":"5822:7:24","nodeType":"YulTypedName","src":"5822:7:24","type":""}]},{"expression":{"arguments":[{"name":"dst","nativeSrc":"5852:3:24","nodeType":"YulIdentifier","src":"5852:3:24"},{"name":"length","nativeSrc":"5857:6:24","nodeType":"YulIdentifier","src":"5857:6:24"}],"functionName":{"name":"mstore","nativeSrc":"5845:6:24","nodeType":"YulIdentifier","src":"5845:6:24"},"nativeSrc":"5845:19:24","nodeType":"YulFunctionCall","src":"5845:19:24"},"nativeSrc":"5845:19:24","nodeType":"YulExpressionStatement","src":"5845:19:24"},{"nativeSrc":"5873:21:24","nodeType":"YulAssignment","src":"5873:21:24","value":{"arguments":[{"name":"dst","nativeSrc":"5884:3:24","nodeType":"YulIdentifier","src":"5884:3:24"},{"kind":"number","nativeSrc":"5889:4:24","nodeType":"YulLiteral","src":"5889:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5880:3:24","nodeType":"YulIdentifier","src":"5880:3:24"},"nativeSrc":"5880:14:24","nodeType":"YulFunctionCall","src":"5880:14:24"},"variableNames":[{"name":"dst","nativeSrc":"5873:3:24","nodeType":"YulIdentifier","src":"5873:3:24"}]},{"nativeSrc":"5903:52:24","nodeType":"YulVariableDeclaration","src":"5903:52:24","value":{"arguments":[{"arguments":[{"name":"offset","nativeSrc":"5925:6:24","nodeType":"YulIdentifier","src":"5925:6:24"},{"arguments":[{"kind":"number","nativeSrc":"5937:1:24","nodeType":"YulLiteral","src":"5937:1:24","type":"","value":"5"},{"name":"length","nativeSrc":"5940:6:24","nodeType":"YulIdentifier","src":"5940:6:24"}],"functionName":{"name":"shl","nativeSrc":"5933:3:24","nodeType":"YulIdentifier","src":"5933:3:24"},"nativeSrc":"5933:14:24","nodeType":"YulFunctionCall","src":"5933:14:24"}],"functionName":{"name":"add","nativeSrc":"5921:3:24","nodeType":"YulIdentifier","src":"5921:3:24"},"nativeSrc":"5921:27:24","nodeType":"YulFunctionCall","src":"5921:27:24"},{"kind":"number","nativeSrc":"5950:4:24","nodeType":"YulLiteral","src":"5950:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"5917:3:24","nodeType":"YulIdentifier","src":"5917:3:24"},"nativeSrc":"5917:38:24","nodeType":"YulFunctionCall","src":"5917:38:24"},"variables":[{"name":"srcEnd","nativeSrc":"5907:6:24","nodeType":"YulTypedName","src":"5907:6:24","type":""}]},{"body":{"nativeSrc":"5983:16:24","nodeType":"YulBlock","src":"5983:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"5992:1:24","nodeType":"YulLiteral","src":"5992:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"5995:1:24","nodeType":"YulLiteral","src":"5995:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"5985:6:24","nodeType":"YulIdentifier","src":"5985:6:24"},"nativeSrc":"5985:12:24","nodeType":"YulFunctionCall","src":"5985:12:24"},"nativeSrc":"5985:12:24","nodeType":"YulExpressionStatement","src":"5985:12:24"}]},"condition":{"arguments":[{"name":"srcEnd","nativeSrc":"5970:6:24","nodeType":"YulIdentifier","src":"5970:6:24"},{"name":"end","nativeSrc":"5978:3:24","nodeType":"YulIdentifier","src":"5978:3:24"}],"functionName":{"name":"gt","nativeSrc":"5967:2:24","nodeType":"YulIdentifier","src":"5967:2:24"},"nativeSrc":"5967:15:24","nodeType":"YulFunctionCall","src":"5967:15:24"},"nativeSrc":"5964:35:24","nodeType":"YulIf","src":"5964:35:24"},{"nativeSrc":"6008:28:24","nodeType":"YulVariableDeclaration","src":"6008:28:24","value":{"arguments":[{"name":"offset","nativeSrc":"6023:6:24","nodeType":"YulIdentifier","src":"6023:6:24"},{"kind":"number","nativeSrc":"6031:4:24","nodeType":"YulLiteral","src":"6031:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6019:3:24","nodeType":"YulIdentifier","src":"6019:3:24"},"nativeSrc":"6019:17:24","nodeType":"YulFunctionCall","src":"6019:17:24"},"variables":[{"name":"src","nativeSrc":"6012:3:24","nodeType":"YulTypedName","src":"6012:3:24","type":""}]},{"body":{"nativeSrc":"6103:163:24","nodeType":"YulBlock","src":"6103:163:24","statements":[{"nativeSrc":"6117:30:24","nodeType":"YulVariableDeclaration","src":"6117:30:24","value":{"arguments":[{"name":"src","nativeSrc":"6143:3:24","nodeType":"YulIdentifier","src":"6143:3:24"}],"functionName":{"name":"calldataload","nativeSrc":"6130:12:24","nodeType":"YulIdentifier","src":"6130:12:24"},"nativeSrc":"6130:17:24","nodeType":"YulFunctionCall","src":"6130:17:24"},"variables":[{"name":"value","nativeSrc":"6121:5:24","nodeType":"YulTypedName","src":"6121:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6185:5:24","nodeType":"YulIdentifier","src":"6185:5:24"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6160:24:24","nodeType":"YulIdentifier","src":"6160:24:24"},"nativeSrc":"6160:31:24","nodeType":"YulFunctionCall","src":"6160:31:24"},"nativeSrc":"6160:31:24","nodeType":"YulExpressionStatement","src":"6160:31:24"},{"expression":{"arguments":[{"name":"dst","nativeSrc":"6211:3:24","nodeType":"YulIdentifier","src":"6211:3:24"},{"name":"value","nativeSrc":"6216:5:24","nodeType":"YulIdentifier","src":"6216:5:24"}],"functionName":{"name":"mstore","nativeSrc":"6204:6:24","nodeType":"YulIdentifier","src":"6204:6:24"},"nativeSrc":"6204:18:24","nodeType":"YulFunctionCall","src":"6204:18:24"},"nativeSrc":"6204:18:24","nodeType":"YulExpressionStatement","src":"6204:18:24"},{"nativeSrc":"6235:21:24","nodeType":"YulAssignment","src":"6235:21:24","value":{"arguments":[{"name":"dst","nativeSrc":"6246:3:24","nodeType":"YulIdentifier","src":"6246:3:24"},{"kind":"number","nativeSrc":"6251:4:24","nodeType":"YulLiteral","src":"6251:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6242:3:24","nodeType":"YulIdentifier","src":"6242:3:24"},"nativeSrc":"6242:14:24","nodeType":"YulFunctionCall","src":"6242:14:24"},"variableNames":[{"name":"dst","nativeSrc":"6235:3:24","nodeType":"YulIdentifier","src":"6235:3:24"}]}]},"condition":{"arguments":[{"name":"src","nativeSrc":"6056:3:24","nodeType":"YulIdentifier","src":"6056:3:24"},{"name":"srcEnd","nativeSrc":"6061:6:24","nodeType":"YulIdentifier","src":"6061:6:24"}],"functionName":{"name":"lt","nativeSrc":"6053:2:24","nodeType":"YulIdentifier","src":"6053:2:24"},"nativeSrc":"6053:15:24","nodeType":"YulFunctionCall","src":"6053:15:24"},"nativeSrc":"6045:221:24","nodeType":"YulForLoop","post":{"nativeSrc":"6069:25:24","nodeType":"YulBlock","src":"6069:25:24","statements":[{"nativeSrc":"6071:21:24","nodeType":"YulAssignment","src":"6071:21:24","value":{"arguments":[{"name":"src","nativeSrc":"6082:3:24","nodeType":"YulIdentifier","src":"6082:3:24"},{"kind":"number","nativeSrc":"6087:4:24","nodeType":"YulLiteral","src":"6087:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"6078:3:24","nodeType":"YulIdentifier","src":"6078:3:24"},"nativeSrc":"6078:14:24","nodeType":"YulFunctionCall","src":"6078:14:24"},"variableNames":[{"name":"src","nativeSrc":"6071:3:24","nodeType":"YulIdentifier","src":"6071:3:24"}]}]},"pre":{"nativeSrc":"6049:3:24","nodeType":"YulBlock","src":"6049:3:24","statements":[]},"src":"6045:221:24"},{"nativeSrc":"6275:16:24","nodeType":"YulAssignment","src":"6275:16:24","value":{"name":"array_1","nativeSrc":"6284:7:24","nodeType":"YulIdentifier","src":"6284:7:24"},"variableNames":[{"name":"array","nativeSrc":"6275:5:24","nodeType":"YulIdentifier","src":"6275:5:24"}]}]},"name":"abi_decode_array_address_dyn","nativeSrc":"5553:744:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"5591:6:24","nodeType":"YulTypedName","src":"5591:6:24","type":""},{"name":"end","nativeSrc":"5599:3:24","nodeType":"YulTypedName","src":"5599:3:24","type":""}],"returnVariables":[{"name":"array","nativeSrc":"5607:5:24","nodeType":"YulTypedName","src":"5607:5:24","type":""}],"src":"5553:744:24"},{"body":{"nativeSrc":"6456:571:24","nodeType":"YulBlock","src":"6456:571:24","statements":[{"body":{"nativeSrc":"6502:16:24","nodeType":"YulBlock","src":"6502:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6511:1:24","nodeType":"YulLiteral","src":"6511:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"6514:1:24","nodeType":"YulLiteral","src":"6514:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6504:6:24","nodeType":"YulIdentifier","src":"6504:6:24"},"nativeSrc":"6504:12:24","nodeType":"YulFunctionCall","src":"6504:12:24"},"nativeSrc":"6504:12:24","nodeType":"YulExpressionStatement","src":"6504:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"6477:7:24","nodeType":"YulIdentifier","src":"6477:7:24"},{"name":"headStart","nativeSrc":"6486:9:24","nodeType":"YulIdentifier","src":"6486:9:24"}],"functionName":{"name":"sub","nativeSrc":"6473:3:24","nodeType":"YulIdentifier","src":"6473:3:24"},"nativeSrc":"6473:23:24","nodeType":"YulFunctionCall","src":"6473:23:24"},{"kind":"number","nativeSrc":"6498:2:24","nodeType":"YulLiteral","src":"6498:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"6469:3:24","nodeType":"YulIdentifier","src":"6469:3:24"},"nativeSrc":"6469:32:24","nodeType":"YulFunctionCall","src":"6469:32:24"},"nativeSrc":"6466:52:24","nodeType":"YulIf","src":"6466:52:24"},{"nativeSrc":"6527:36:24","nodeType":"YulVariableDeclaration","src":"6527:36:24","value":{"arguments":[{"name":"headStart","nativeSrc":"6553:9:24","nodeType":"YulIdentifier","src":"6553:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"6540:12:24","nodeType":"YulIdentifier","src":"6540:12:24"},"nativeSrc":"6540:23:24","nodeType":"YulFunctionCall","src":"6540:23:24"},"variables":[{"name":"value","nativeSrc":"6531:5:24","nodeType":"YulTypedName","src":"6531:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"6597:5:24","nodeType":"YulIdentifier","src":"6597:5:24"}],"functionName":{"name":"validator_revert_address","nativeSrc":"6572:24:24","nodeType":"YulIdentifier","src":"6572:24:24"},"nativeSrc":"6572:31:24","nodeType":"YulFunctionCall","src":"6572:31:24"},"nativeSrc":"6572:31:24","nodeType":"YulExpressionStatement","src":"6572:31:24"},{"nativeSrc":"6612:15:24","nodeType":"YulAssignment","src":"6612:15:24","value":{"name":"value","nativeSrc":"6622:5:24","nodeType":"YulIdentifier","src":"6622:5:24"},"variableNames":[{"name":"value0","nativeSrc":"6612:6:24","nodeType":"YulIdentifier","src":"6612:6:24"}]},{"nativeSrc":"6636:46:24","nodeType":"YulVariableDeclaration","src":"6636:46:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6667:9:24","nodeType":"YulIdentifier","src":"6667:9:24"},{"kind":"number","nativeSrc":"6678:2:24","nodeType":"YulLiteral","src":"6678:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"6663:3:24","nodeType":"YulIdentifier","src":"6663:3:24"},"nativeSrc":"6663:18:24","nodeType":"YulFunctionCall","src":"6663:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"6650:12:24","nodeType":"YulIdentifier","src":"6650:12:24"},"nativeSrc":"6650:32:24","nodeType":"YulFunctionCall","src":"6650:32:24"},"variables":[{"name":"offset","nativeSrc":"6640:6:24","nodeType":"YulTypedName","src":"6640:6:24","type":""}]},{"body":{"nativeSrc":"6725:16:24","nodeType":"YulBlock","src":"6725:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6734:1:24","nodeType":"YulLiteral","src":"6734:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"6737:1:24","nodeType":"YulLiteral","src":"6737:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6727:6:24","nodeType":"YulIdentifier","src":"6727:6:24"},"nativeSrc":"6727:12:24","nodeType":"YulFunctionCall","src":"6727:12:24"},"nativeSrc":"6727:12:24","nodeType":"YulExpressionStatement","src":"6727:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"6697:6:24","nodeType":"YulIdentifier","src":"6697:6:24"},{"kind":"number","nativeSrc":"6705:18:24","nodeType":"YulLiteral","src":"6705:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6694:2:24","nodeType":"YulIdentifier","src":"6694:2:24"},"nativeSrc":"6694:30:24","nodeType":"YulFunctionCall","src":"6694:30:24"},"nativeSrc":"6691:50:24","nodeType":"YulIf","src":"6691:50:24"},{"nativeSrc":"6750:71:24","nodeType":"YulAssignment","src":"6750:71:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6793:9:24","nodeType":"YulIdentifier","src":"6793:9:24"},{"name":"offset","nativeSrc":"6804:6:24","nodeType":"YulIdentifier","src":"6804:6:24"}],"functionName":{"name":"add","nativeSrc":"6789:3:24","nodeType":"YulIdentifier","src":"6789:3:24"},"nativeSrc":"6789:22:24","nodeType":"YulFunctionCall","src":"6789:22:24"},{"name":"dataEnd","nativeSrc":"6813:7:24","nodeType":"YulIdentifier","src":"6813:7:24"}],"functionName":{"name":"abi_decode_array_address_dyn","nativeSrc":"6760:28:24","nodeType":"YulIdentifier","src":"6760:28:24"},"nativeSrc":"6760:61:24","nodeType":"YulFunctionCall","src":"6760:61:24"},"variableNames":[{"name":"value1","nativeSrc":"6750:6:24","nodeType":"YulIdentifier","src":"6750:6:24"}]},{"nativeSrc":"6830:48:24","nodeType":"YulVariableDeclaration","src":"6830:48:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6863:9:24","nodeType":"YulIdentifier","src":"6863:9:24"},{"kind":"number","nativeSrc":"6874:2:24","nodeType":"YulLiteral","src":"6874:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"6859:3:24","nodeType":"YulIdentifier","src":"6859:3:24"},"nativeSrc":"6859:18:24","nodeType":"YulFunctionCall","src":"6859:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"6846:12:24","nodeType":"YulIdentifier","src":"6846:12:24"},"nativeSrc":"6846:32:24","nodeType":"YulFunctionCall","src":"6846:32:24"},"variables":[{"name":"offset_1","nativeSrc":"6834:8:24","nodeType":"YulTypedName","src":"6834:8:24","type":""}]},{"body":{"nativeSrc":"6923:16:24","nodeType":"YulBlock","src":"6923:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"6932:1:24","nodeType":"YulLiteral","src":"6932:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"6935:1:24","nodeType":"YulLiteral","src":"6935:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"6925:6:24","nodeType":"YulIdentifier","src":"6925:6:24"},"nativeSrc":"6925:12:24","nodeType":"YulFunctionCall","src":"6925:12:24"},"nativeSrc":"6925:12:24","nodeType":"YulExpressionStatement","src":"6925:12:24"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"6893:8:24","nodeType":"YulIdentifier","src":"6893:8:24"},{"kind":"number","nativeSrc":"6903:18:24","nodeType":"YulLiteral","src":"6903:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"6890:2:24","nodeType":"YulIdentifier","src":"6890:2:24"},"nativeSrc":"6890:32:24","nodeType":"YulFunctionCall","src":"6890:32:24"},"nativeSrc":"6887:52:24","nodeType":"YulIf","src":"6887:52:24"},{"nativeSrc":"6948:73:24","nodeType":"YulAssignment","src":"6948:73:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"6991:9:24","nodeType":"YulIdentifier","src":"6991:9:24"},{"name":"offset_1","nativeSrc":"7002:8:24","nodeType":"YulIdentifier","src":"7002:8:24"}],"functionName":{"name":"add","nativeSrc":"6987:3:24","nodeType":"YulIdentifier","src":"6987:3:24"},"nativeSrc":"6987:24:24","nodeType":"YulFunctionCall","src":"6987:24:24"},{"name":"dataEnd","nativeSrc":"7013:7:24","nodeType":"YulIdentifier","src":"7013:7:24"}],"functionName":{"name":"abi_decode_array_address_dyn","nativeSrc":"6958:28:24","nodeType":"YulIdentifier","src":"6958:28:24"},"nativeSrc":"6958:63:24","nodeType":"YulFunctionCall","src":"6958:63:24"},"variableNames":[{"name":"value2","nativeSrc":"6948:6:24","nodeType":"YulIdentifier","src":"6948:6:24"}]}]},"name":"abi_decode_tuple_t_addresst_array$_t_address_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptr","nativeSrc":"6302:725:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"6406:9:24","nodeType":"YulTypedName","src":"6406:9:24","type":""},{"name":"dataEnd","nativeSrc":"6417:7:24","nodeType":"YulTypedName","src":"6417:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"6429:6:24","nodeType":"YulTypedName","src":"6429:6:24","type":""},{"name":"value1","nativeSrc":"6437:6:24","nodeType":"YulTypedName","src":"6437:6:24","type":""},{"name":"value2","nativeSrc":"6445:6:24","nodeType":"YulTypedName","src":"6445:6:24","type":""}],"src":"6302:725:24"},{"body":{"nativeSrc":"7128:804:24","nodeType":"YulBlock","src":"7128:804:24","statements":[{"body":{"nativeSrc":"7174:16:24","nodeType":"YulBlock","src":"7174:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7183:1:24","nodeType":"YulLiteral","src":"7183:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"7186:1:24","nodeType":"YulLiteral","src":"7186:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7176:6:24","nodeType":"YulIdentifier","src":"7176:6:24"},"nativeSrc":"7176:12:24","nodeType":"YulFunctionCall","src":"7176:12:24"},"nativeSrc":"7176:12:24","nodeType":"YulExpressionStatement","src":"7176:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"7149:7:24","nodeType":"YulIdentifier","src":"7149:7:24"},{"name":"headStart","nativeSrc":"7158:9:24","nodeType":"YulIdentifier","src":"7158:9:24"}],"functionName":{"name":"sub","nativeSrc":"7145:3:24","nodeType":"YulIdentifier","src":"7145:3:24"},"nativeSrc":"7145:23:24","nodeType":"YulFunctionCall","src":"7145:23:24"},{"kind":"number","nativeSrc":"7170:2:24","nodeType":"YulLiteral","src":"7170:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"7141:3:24","nodeType":"YulIdentifier","src":"7141:3:24"},"nativeSrc":"7141:32:24","nodeType":"YulFunctionCall","src":"7141:32:24"},"nativeSrc":"7138:52:24","nodeType":"YulIf","src":"7138:52:24"},{"nativeSrc":"7199:36:24","nodeType":"YulVariableDeclaration","src":"7199:36:24","value":{"arguments":[{"name":"headStart","nativeSrc":"7225:9:24","nodeType":"YulIdentifier","src":"7225:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"7212:12:24","nodeType":"YulIdentifier","src":"7212:12:24"},"nativeSrc":"7212:23:24","nodeType":"YulFunctionCall","src":"7212:23:24"},"variables":[{"name":"value","nativeSrc":"7203:5:24","nodeType":"YulTypedName","src":"7203:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"7269:5:24","nodeType":"YulIdentifier","src":"7269:5:24"}],"functionName":{"name":"validator_revert_address","nativeSrc":"7244:24:24","nodeType":"YulIdentifier","src":"7244:24:24"},"nativeSrc":"7244:31:24","nodeType":"YulFunctionCall","src":"7244:31:24"},"nativeSrc":"7244:31:24","nodeType":"YulExpressionStatement","src":"7244:31:24"},{"nativeSrc":"7284:15:24","nodeType":"YulAssignment","src":"7284:15:24","value":{"name":"value","nativeSrc":"7294:5:24","nodeType":"YulIdentifier","src":"7294:5:24"},"variableNames":[{"name":"value0","nativeSrc":"7284:6:24","nodeType":"YulIdentifier","src":"7284:6:24"}]},{"nativeSrc":"7308:46:24","nodeType":"YulVariableDeclaration","src":"7308:46:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"7339:9:24","nodeType":"YulIdentifier","src":"7339:9:24"},{"kind":"number","nativeSrc":"7350:2:24","nodeType":"YulLiteral","src":"7350:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7335:3:24","nodeType":"YulIdentifier","src":"7335:3:24"},"nativeSrc":"7335:18:24","nodeType":"YulFunctionCall","src":"7335:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"7322:12:24","nodeType":"YulIdentifier","src":"7322:12:24"},"nativeSrc":"7322:32:24","nodeType":"YulFunctionCall","src":"7322:32:24"},"variables":[{"name":"offset","nativeSrc":"7312:6:24","nodeType":"YulTypedName","src":"7312:6:24","type":""}]},{"body":{"nativeSrc":"7397:16:24","nodeType":"YulBlock","src":"7397:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7406:1:24","nodeType":"YulLiteral","src":"7406:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"7409:1:24","nodeType":"YulLiteral","src":"7409:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7399:6:24","nodeType":"YulIdentifier","src":"7399:6:24"},"nativeSrc":"7399:12:24","nodeType":"YulFunctionCall","src":"7399:12:24"},"nativeSrc":"7399:12:24","nodeType":"YulExpressionStatement","src":"7399:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"7369:6:24","nodeType":"YulIdentifier","src":"7369:6:24"},{"kind":"number","nativeSrc":"7377:18:24","nodeType":"YulLiteral","src":"7377:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7366:2:24","nodeType":"YulIdentifier","src":"7366:2:24"},"nativeSrc":"7366:30:24","nodeType":"YulFunctionCall","src":"7366:30:24"},"nativeSrc":"7363:50:24","nodeType":"YulIf","src":"7363:50:24"},{"nativeSrc":"7422:32:24","nodeType":"YulVariableDeclaration","src":"7422:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"7436:9:24","nodeType":"YulIdentifier","src":"7436:9:24"},{"name":"offset","nativeSrc":"7447:6:24","nodeType":"YulIdentifier","src":"7447:6:24"}],"functionName":{"name":"add","nativeSrc":"7432:3:24","nodeType":"YulIdentifier","src":"7432:3:24"},"nativeSrc":"7432:22:24","nodeType":"YulFunctionCall","src":"7432:22:24"},"variables":[{"name":"_1","nativeSrc":"7426:2:24","nodeType":"YulTypedName","src":"7426:2:24","type":""}]},{"body":{"nativeSrc":"7502:16:24","nodeType":"YulBlock","src":"7502:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7511:1:24","nodeType":"YulLiteral","src":"7511:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"7514:1:24","nodeType":"YulLiteral","src":"7514:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7504:6:24","nodeType":"YulIdentifier","src":"7504:6:24"},"nativeSrc":"7504:12:24","nodeType":"YulFunctionCall","src":"7504:12:24"},"nativeSrc":"7504:12:24","nodeType":"YulExpressionStatement","src":"7504:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7481:2:24","nodeType":"YulIdentifier","src":"7481:2:24"},{"kind":"number","nativeSrc":"7485:4:24","nodeType":"YulLiteral","src":"7485:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"7477:3:24","nodeType":"YulIdentifier","src":"7477:3:24"},"nativeSrc":"7477:13:24","nodeType":"YulFunctionCall","src":"7477:13:24"},{"name":"dataEnd","nativeSrc":"7492:7:24","nodeType":"YulIdentifier","src":"7492:7:24"}],"functionName":{"name":"slt","nativeSrc":"7473:3:24","nodeType":"YulIdentifier","src":"7473:3:24"},"nativeSrc":"7473:27:24","nodeType":"YulFunctionCall","src":"7473:27:24"}],"functionName":{"name":"iszero","nativeSrc":"7466:6:24","nodeType":"YulIdentifier","src":"7466:6:24"},"nativeSrc":"7466:35:24","nodeType":"YulFunctionCall","src":"7466:35:24"},"nativeSrc":"7463:55:24","nodeType":"YulIf","src":"7463:55:24"},{"nativeSrc":"7527:30:24","nodeType":"YulVariableDeclaration","src":"7527:30:24","value":{"arguments":[{"name":"_1","nativeSrc":"7554:2:24","nodeType":"YulIdentifier","src":"7554:2:24"}],"functionName":{"name":"calldataload","nativeSrc":"7541:12:24","nodeType":"YulIdentifier","src":"7541:12:24"},"nativeSrc":"7541:16:24","nodeType":"YulFunctionCall","src":"7541:16:24"},"variables":[{"name":"length","nativeSrc":"7531:6:24","nodeType":"YulTypedName","src":"7531:6:24","type":""}]},{"body":{"nativeSrc":"7600:22:24","nodeType":"YulBlock","src":"7600:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"7602:16:24","nodeType":"YulIdentifier","src":"7602:16:24"},"nativeSrc":"7602:18:24","nodeType":"YulFunctionCall","src":"7602:18:24"},"nativeSrc":"7602:18:24","nodeType":"YulExpressionStatement","src":"7602:18:24"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"7572:6:24","nodeType":"YulIdentifier","src":"7572:6:24"},{"kind":"number","nativeSrc":"7580:18:24","nodeType":"YulLiteral","src":"7580:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"7569:2:24","nodeType":"YulIdentifier","src":"7569:2:24"},"nativeSrc":"7569:30:24","nodeType":"YulFunctionCall","src":"7569:30:24"},"nativeSrc":"7566:56:24","nodeType":"YulIf","src":"7566:56:24"},{"nativeSrc":"7631:70:24","nodeType":"YulVariableDeclaration","src":"7631:70:24","value":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"7672:6:24","nodeType":"YulIdentifier","src":"7672:6:24"},{"kind":"number","nativeSrc":"7680:4:24","nodeType":"YulLiteral","src":"7680:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"7668:3:24","nodeType":"YulIdentifier","src":"7668:3:24"},"nativeSrc":"7668:17:24","nodeType":"YulFunctionCall","src":"7668:17:24"},{"arguments":[{"kind":"number","nativeSrc":"7691:2:24","nodeType":"YulLiteral","src":"7691:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"7687:3:24","nodeType":"YulIdentifier","src":"7687:3:24"},"nativeSrc":"7687:7:24","nodeType":"YulFunctionCall","src":"7687:7:24"}],"functionName":{"name":"and","nativeSrc":"7664:3:24","nodeType":"YulIdentifier","src":"7664:3:24"},"nativeSrc":"7664:31:24","nodeType":"YulFunctionCall","src":"7664:31:24"},{"kind":"number","nativeSrc":"7697:2:24","nodeType":"YulLiteral","src":"7697:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7660:3:24","nodeType":"YulIdentifier","src":"7660:3:24"},"nativeSrc":"7660:40:24","nodeType":"YulFunctionCall","src":"7660:40:24"}],"functionName":{"name":"allocate_memory","nativeSrc":"7644:15:24","nodeType":"YulIdentifier","src":"7644:15:24"},"nativeSrc":"7644:57:24","nodeType":"YulFunctionCall","src":"7644:57:24"},"variables":[{"name":"array","nativeSrc":"7635:5:24","nodeType":"YulTypedName","src":"7635:5:24","type":""}]},{"expression":{"arguments":[{"name":"array","nativeSrc":"7717:5:24","nodeType":"YulIdentifier","src":"7717:5:24"},{"name":"length","nativeSrc":"7724:6:24","nodeType":"YulIdentifier","src":"7724:6:24"}],"functionName":{"name":"mstore","nativeSrc":"7710:6:24","nodeType":"YulIdentifier","src":"7710:6:24"},"nativeSrc":"7710:21:24","nodeType":"YulFunctionCall","src":"7710:21:24"},"nativeSrc":"7710:21:24","nodeType":"YulExpressionStatement","src":"7710:21:24"},{"body":{"nativeSrc":"7781:16:24","nodeType":"YulBlock","src":"7781:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"7790:1:24","nodeType":"YulLiteral","src":"7790:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"7793:1:24","nodeType":"YulLiteral","src":"7793:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"7783:6:24","nodeType":"YulIdentifier","src":"7783:6:24"},"nativeSrc":"7783:12:24","nodeType":"YulFunctionCall","src":"7783:12:24"},"nativeSrc":"7783:12:24","nodeType":"YulExpressionStatement","src":"7783:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"7754:2:24","nodeType":"YulIdentifier","src":"7754:2:24"},{"name":"length","nativeSrc":"7758:6:24","nodeType":"YulIdentifier","src":"7758:6:24"}],"functionName":{"name":"add","nativeSrc":"7750:3:24","nodeType":"YulIdentifier","src":"7750:3:24"},"nativeSrc":"7750:15:24","nodeType":"YulFunctionCall","src":"7750:15:24"},{"kind":"number","nativeSrc":"7767:2:24","nodeType":"YulLiteral","src":"7767:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7746:3:24","nodeType":"YulIdentifier","src":"7746:3:24"},"nativeSrc":"7746:24:24","nodeType":"YulFunctionCall","src":"7746:24:24"},{"name":"dataEnd","nativeSrc":"7772:7:24","nodeType":"YulIdentifier","src":"7772:7:24"}],"functionName":{"name":"gt","nativeSrc":"7743:2:24","nodeType":"YulIdentifier","src":"7743:2:24"},"nativeSrc":"7743:37:24","nodeType":"YulFunctionCall","src":"7743:37:24"},"nativeSrc":"7740:57:24","nodeType":"YulIf","src":"7740:57:24"},{"expression":{"arguments":[{"arguments":[{"name":"array","nativeSrc":"7823:5:24","nodeType":"YulIdentifier","src":"7823:5:24"},{"kind":"number","nativeSrc":"7830:2:24","nodeType":"YulLiteral","src":"7830:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7819:3:24","nodeType":"YulIdentifier","src":"7819:3:24"},"nativeSrc":"7819:14:24","nodeType":"YulFunctionCall","src":"7819:14:24"},{"arguments":[{"name":"_1","nativeSrc":"7839:2:24","nodeType":"YulIdentifier","src":"7839:2:24"},{"kind":"number","nativeSrc":"7843:2:24","nodeType":"YulLiteral","src":"7843:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7835:3:24","nodeType":"YulIdentifier","src":"7835:3:24"},"nativeSrc":"7835:11:24","nodeType":"YulFunctionCall","src":"7835:11:24"},{"name":"length","nativeSrc":"7848:6:24","nodeType":"YulIdentifier","src":"7848:6:24"}],"functionName":{"name":"calldatacopy","nativeSrc":"7806:12:24","nodeType":"YulIdentifier","src":"7806:12:24"},"nativeSrc":"7806:49:24","nodeType":"YulFunctionCall","src":"7806:49:24"},"nativeSrc":"7806:49:24","nodeType":"YulExpressionStatement","src":"7806:49:24"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"array","nativeSrc":"7879:5:24","nodeType":"YulIdentifier","src":"7879:5:24"},{"name":"length","nativeSrc":"7886:6:24","nodeType":"YulIdentifier","src":"7886:6:24"}],"functionName":{"name":"add","nativeSrc":"7875:3:24","nodeType":"YulIdentifier","src":"7875:3:24"},"nativeSrc":"7875:18:24","nodeType":"YulFunctionCall","src":"7875:18:24"},{"kind":"number","nativeSrc":"7895:2:24","nodeType":"YulLiteral","src":"7895:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"7871:3:24","nodeType":"YulIdentifier","src":"7871:3:24"},"nativeSrc":"7871:27:24","nodeType":"YulFunctionCall","src":"7871:27:24"},{"kind":"number","nativeSrc":"7900:1:24","nodeType":"YulLiteral","src":"7900:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"7864:6:24","nodeType":"YulIdentifier","src":"7864:6:24"},"nativeSrc":"7864:38:24","nodeType":"YulFunctionCall","src":"7864:38:24"},"nativeSrc":"7864:38:24","nodeType":"YulExpressionStatement","src":"7864:38:24"},{"nativeSrc":"7911:15:24","nodeType":"YulAssignment","src":"7911:15:24","value":{"name":"array","nativeSrc":"7921:5:24","nodeType":"YulIdentifier","src":"7921:5:24"},"variableNames":[{"name":"value1","nativeSrc":"7911:6:24","nodeType":"YulIdentifier","src":"7911:6:24"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_memory_ptr","nativeSrc":"7032:900:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"7086:9:24","nodeType":"YulTypedName","src":"7086:9:24","type":""},{"name":"dataEnd","nativeSrc":"7097:7:24","nodeType":"YulTypedName","src":"7097:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"7109:6:24","nodeType":"YulTypedName","src":"7109:6:24","type":""},{"name":"value1","nativeSrc":"7117:6:24","nodeType":"YulTypedName","src":"7117:6:24","type":""}],"src":"7032:900:24"},{"body":{"nativeSrc":"8074:453:24","nodeType":"YulBlock","src":"8074:453:24","statements":[{"body":{"nativeSrc":"8120:16:24","nodeType":"YulBlock","src":"8120:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8129:1:24","nodeType":"YulLiteral","src":"8129:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"8132:1:24","nodeType":"YulLiteral","src":"8132:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8122:6:24","nodeType":"YulIdentifier","src":"8122:6:24"},"nativeSrc":"8122:12:24","nodeType":"YulFunctionCall","src":"8122:12:24"},"nativeSrc":"8122:12:24","nodeType":"YulExpressionStatement","src":"8122:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"8095:7:24","nodeType":"YulIdentifier","src":"8095:7:24"},{"name":"headStart","nativeSrc":"8104:9:24","nodeType":"YulIdentifier","src":"8104:9:24"}],"functionName":{"name":"sub","nativeSrc":"8091:3:24","nodeType":"YulIdentifier","src":"8091:3:24"},"nativeSrc":"8091:23:24","nodeType":"YulFunctionCall","src":"8091:23:24"},{"kind":"number","nativeSrc":"8116:2:24","nodeType":"YulLiteral","src":"8116:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"8087:3:24","nodeType":"YulIdentifier","src":"8087:3:24"},"nativeSrc":"8087:32:24","nodeType":"YulFunctionCall","src":"8087:32:24"},"nativeSrc":"8084:52:24","nodeType":"YulIf","src":"8084:52:24"},{"nativeSrc":"8145:37:24","nodeType":"YulVariableDeclaration","src":"8145:37:24","value":{"arguments":[{"name":"headStart","nativeSrc":"8172:9:24","nodeType":"YulIdentifier","src":"8172:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"8159:12:24","nodeType":"YulIdentifier","src":"8159:12:24"},"nativeSrc":"8159:23:24","nodeType":"YulFunctionCall","src":"8159:23:24"},"variables":[{"name":"offset","nativeSrc":"8149:6:24","nodeType":"YulTypedName","src":"8149:6:24","type":""}]},{"body":{"nativeSrc":"8225:16:24","nodeType":"YulBlock","src":"8225:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8234:1:24","nodeType":"YulLiteral","src":"8234:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"8237:1:24","nodeType":"YulLiteral","src":"8237:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8227:6:24","nodeType":"YulIdentifier","src":"8227:6:24"},"nativeSrc":"8227:12:24","nodeType":"YulFunctionCall","src":"8227:12:24"},"nativeSrc":"8227:12:24","nodeType":"YulExpressionStatement","src":"8227:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"8197:6:24","nodeType":"YulIdentifier","src":"8197:6:24"},{"kind":"number","nativeSrc":"8205:18:24","nodeType":"YulLiteral","src":"8205:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8194:2:24","nodeType":"YulIdentifier","src":"8194:2:24"},"nativeSrc":"8194:30:24","nodeType":"YulFunctionCall","src":"8194:30:24"},"nativeSrc":"8191:50:24","nodeType":"YulIf","src":"8191:50:24"},{"nativeSrc":"8250:71:24","nodeType":"YulAssignment","src":"8250:71:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8293:9:24","nodeType":"YulIdentifier","src":"8293:9:24"},{"name":"offset","nativeSrc":"8304:6:24","nodeType":"YulIdentifier","src":"8304:6:24"}],"functionName":{"name":"add","nativeSrc":"8289:3:24","nodeType":"YulIdentifier","src":"8289:3:24"},"nativeSrc":"8289:22:24","nodeType":"YulFunctionCall","src":"8289:22:24"},{"name":"dataEnd","nativeSrc":"8313:7:24","nodeType":"YulIdentifier","src":"8313:7:24"}],"functionName":{"name":"abi_decode_array_address_dyn","nativeSrc":"8260:28:24","nodeType":"YulIdentifier","src":"8260:28:24"},"nativeSrc":"8260:61:24","nodeType":"YulFunctionCall","src":"8260:61:24"},"variableNames":[{"name":"value0","nativeSrc":"8250:6:24","nodeType":"YulIdentifier","src":"8250:6:24"}]},{"nativeSrc":"8330:48:24","nodeType":"YulVariableDeclaration","src":"8330:48:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8363:9:24","nodeType":"YulIdentifier","src":"8363:9:24"},{"kind":"number","nativeSrc":"8374:2:24","nodeType":"YulLiteral","src":"8374:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8359:3:24","nodeType":"YulIdentifier","src":"8359:3:24"},"nativeSrc":"8359:18:24","nodeType":"YulFunctionCall","src":"8359:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"8346:12:24","nodeType":"YulIdentifier","src":"8346:12:24"},"nativeSrc":"8346:32:24","nodeType":"YulFunctionCall","src":"8346:32:24"},"variables":[{"name":"offset_1","nativeSrc":"8334:8:24","nodeType":"YulTypedName","src":"8334:8:24","type":""}]},{"body":{"nativeSrc":"8423:16:24","nodeType":"YulBlock","src":"8423:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"8432:1:24","nodeType":"YulLiteral","src":"8432:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"8435:1:24","nodeType":"YulLiteral","src":"8435:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"8425:6:24","nodeType":"YulIdentifier","src":"8425:6:24"},"nativeSrc":"8425:12:24","nodeType":"YulFunctionCall","src":"8425:12:24"},"nativeSrc":"8425:12:24","nodeType":"YulExpressionStatement","src":"8425:12:24"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"8393:8:24","nodeType":"YulIdentifier","src":"8393:8:24"},{"kind":"number","nativeSrc":"8403:18:24","nodeType":"YulLiteral","src":"8403:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"8390:2:24","nodeType":"YulIdentifier","src":"8390:2:24"},"nativeSrc":"8390:32:24","nodeType":"YulFunctionCall","src":"8390:32:24"},"nativeSrc":"8387:52:24","nodeType":"YulIf","src":"8387:52:24"},{"nativeSrc":"8448:73:24","nodeType":"YulAssignment","src":"8448:73:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"8491:9:24","nodeType":"YulIdentifier","src":"8491:9:24"},{"name":"offset_1","nativeSrc":"8502:8:24","nodeType":"YulIdentifier","src":"8502:8:24"}],"functionName":{"name":"add","nativeSrc":"8487:3:24","nodeType":"YulIdentifier","src":"8487:3:24"},"nativeSrc":"8487:24:24","nodeType":"YulFunctionCall","src":"8487:24:24"},{"name":"dataEnd","nativeSrc":"8513:7:24","nodeType":"YulIdentifier","src":"8513:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"8458:28:24","nodeType":"YulIdentifier","src":"8458:28:24"},"nativeSrc":"8458:63:24","nodeType":"YulFunctionCall","src":"8458:63:24"},"variableNames":[{"name":"value1","nativeSrc":"8448:6:24","nodeType":"YulIdentifier","src":"8448:6:24"}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"7937:590:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8032:9:24","nodeType":"YulTypedName","src":"8032:9:24","type":""},{"name":"dataEnd","nativeSrc":"8043:7:24","nodeType":"YulTypedName","src":"8043:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"8055:6:24","nodeType":"YulTypedName","src":"8055:6:24","type":""},{"name":"value1","nativeSrc":"8063:6:24","nodeType":"YulTypedName","src":"8063:6:24","type":""}],"src":"7937:590:24"},{"body":{"nativeSrc":"8677:476:24","nodeType":"YulBlock","src":"8677:476:24","statements":[{"nativeSrc":"8687:32:24","nodeType":"YulVariableDeclaration","src":"8687:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"8705:9:24","nodeType":"YulIdentifier","src":"8705:9:24"},{"kind":"number","nativeSrc":"8716:2:24","nodeType":"YulLiteral","src":"8716:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8701:3:24","nodeType":"YulIdentifier","src":"8701:3:24"},"nativeSrc":"8701:18:24","nodeType":"YulFunctionCall","src":"8701:18:24"},"variables":[{"name":"tail_1","nativeSrc":"8691:6:24","nodeType":"YulTypedName","src":"8691:6:24","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"8735:9:24","nodeType":"YulIdentifier","src":"8735:9:24"},{"kind":"number","nativeSrc":"8746:2:24","nodeType":"YulLiteral","src":"8746:2:24","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"8728:6:24","nodeType":"YulIdentifier","src":"8728:6:24"},"nativeSrc":"8728:21:24","nodeType":"YulFunctionCall","src":"8728:21:24"},"nativeSrc":"8728:21:24","nodeType":"YulExpressionStatement","src":"8728:21:24"},{"nativeSrc":"8758:17:24","nodeType":"YulVariableDeclaration","src":"8758:17:24","value":{"name":"tail_1","nativeSrc":"8769:6:24","nodeType":"YulIdentifier","src":"8769:6:24"},"variables":[{"name":"pos","nativeSrc":"8762:3:24","nodeType":"YulTypedName","src":"8762:3:24","type":""}]},{"nativeSrc":"8784:27:24","nodeType":"YulVariableDeclaration","src":"8784:27:24","value":{"arguments":[{"name":"value0","nativeSrc":"8804:6:24","nodeType":"YulIdentifier","src":"8804:6:24"}],"functionName":{"name":"mload","nativeSrc":"8798:5:24","nodeType":"YulIdentifier","src":"8798:5:24"},"nativeSrc":"8798:13:24","nodeType":"YulFunctionCall","src":"8798:13:24"},"variables":[{"name":"length","nativeSrc":"8788:6:24","nodeType":"YulTypedName","src":"8788:6:24","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"8827:6:24","nodeType":"YulIdentifier","src":"8827:6:24"},{"name":"length","nativeSrc":"8835:6:24","nodeType":"YulIdentifier","src":"8835:6:24"}],"functionName":{"name":"mstore","nativeSrc":"8820:6:24","nodeType":"YulIdentifier","src":"8820:6:24"},"nativeSrc":"8820:22:24","nodeType":"YulFunctionCall","src":"8820:22:24"},"nativeSrc":"8820:22:24","nodeType":"YulExpressionStatement","src":"8820:22:24"},{"nativeSrc":"8851:25:24","nodeType":"YulAssignment","src":"8851:25:24","value":{"arguments":[{"name":"headStart","nativeSrc":"8862:9:24","nodeType":"YulIdentifier","src":"8862:9:24"},{"kind":"number","nativeSrc":"8873:2:24","nodeType":"YulLiteral","src":"8873:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"8858:3:24","nodeType":"YulIdentifier","src":"8858:3:24"},"nativeSrc":"8858:18:24","nodeType":"YulFunctionCall","src":"8858:18:24"},"variableNames":[{"name":"pos","nativeSrc":"8851:3:24","nodeType":"YulIdentifier","src":"8851:3:24"}]},{"nativeSrc":"8885:29:24","nodeType":"YulVariableDeclaration","src":"8885:29:24","value":{"arguments":[{"name":"value0","nativeSrc":"8903:6:24","nodeType":"YulIdentifier","src":"8903:6:24"},{"kind":"number","nativeSrc":"8911:2:24","nodeType":"YulLiteral","src":"8911:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"8899:3:24","nodeType":"YulIdentifier","src":"8899:3:24"},"nativeSrc":"8899:15:24","nodeType":"YulFunctionCall","src":"8899:15:24"},"variables":[{"name":"srcPtr","nativeSrc":"8889:6:24","nodeType":"YulTypedName","src":"8889:6:24","type":""}]},{"nativeSrc":"8923:10:24","nodeType":"YulVariableDeclaration","src":"8923:10:24","value":{"kind":"number","nativeSrc":"8932:1:24","nodeType":"YulLiteral","src":"8932:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"8927:1:24","nodeType":"YulTypedName","src":"8927:1:24","type":""}]},{"body":{"nativeSrc":"8991:136:24","nodeType":"YulBlock","src":"8991:136:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"9012:3:24","nodeType":"YulIdentifier","src":"9012:3:24"},{"arguments":[{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"9037:6:24","nodeType":"YulIdentifier","src":"9037:6:24"}],"functionName":{"name":"mload","nativeSrc":"9031:5:24","nodeType":"YulIdentifier","src":"9031:5:24"},"nativeSrc":"9031:13:24","nodeType":"YulFunctionCall","src":"9031:13:24"}],"functionName":{"name":"iszero","nativeSrc":"9024:6:24","nodeType":"YulIdentifier","src":"9024:6:24"},"nativeSrc":"9024:21:24","nodeType":"YulFunctionCall","src":"9024:21:24"}],"functionName":{"name":"iszero","nativeSrc":"9017:6:24","nodeType":"YulIdentifier","src":"9017:6:24"},"nativeSrc":"9017:29:24","nodeType":"YulFunctionCall","src":"9017:29:24"}],"functionName":{"name":"mstore","nativeSrc":"9005:6:24","nodeType":"YulIdentifier","src":"9005:6:24"},"nativeSrc":"9005:42:24","nodeType":"YulFunctionCall","src":"9005:42:24"},"nativeSrc":"9005:42:24","nodeType":"YulExpressionStatement","src":"9005:42:24"},{"nativeSrc":"9060:19:24","nodeType":"YulAssignment","src":"9060:19:24","value":{"arguments":[{"name":"pos","nativeSrc":"9071:3:24","nodeType":"YulIdentifier","src":"9071:3:24"},{"kind":"number","nativeSrc":"9076:2:24","nodeType":"YulLiteral","src":"9076:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9067:3:24","nodeType":"YulIdentifier","src":"9067:3:24"},"nativeSrc":"9067:12:24","nodeType":"YulFunctionCall","src":"9067:12:24"},"variableNames":[{"name":"pos","nativeSrc":"9060:3:24","nodeType":"YulIdentifier","src":"9060:3:24"}]},{"nativeSrc":"9092:25:24","nodeType":"YulAssignment","src":"9092:25:24","value":{"arguments":[{"name":"srcPtr","nativeSrc":"9106:6:24","nodeType":"YulIdentifier","src":"9106:6:24"},{"kind":"number","nativeSrc":"9114:2:24","nodeType":"YulLiteral","src":"9114:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9102:3:24","nodeType":"YulIdentifier","src":"9102:3:24"},"nativeSrc":"9102:15:24","nodeType":"YulFunctionCall","src":"9102:15:24"},"variableNames":[{"name":"srcPtr","nativeSrc":"9092:6:24","nodeType":"YulIdentifier","src":"9092:6:24"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"8953:1:24","nodeType":"YulIdentifier","src":"8953:1:24"},{"name":"length","nativeSrc":"8956:6:24","nodeType":"YulIdentifier","src":"8956:6:24"}],"functionName":{"name":"lt","nativeSrc":"8950:2:24","nodeType":"YulIdentifier","src":"8950:2:24"},"nativeSrc":"8950:13:24","nodeType":"YulFunctionCall","src":"8950:13:24"},"nativeSrc":"8942:185:24","nodeType":"YulForLoop","post":{"nativeSrc":"8964:18:24","nodeType":"YulBlock","src":"8964:18:24","statements":[{"nativeSrc":"8966:14:24","nodeType":"YulAssignment","src":"8966:14:24","value":{"arguments":[{"name":"i","nativeSrc":"8975:1:24","nodeType":"YulIdentifier","src":"8975:1:24"},{"kind":"number","nativeSrc":"8978:1:24","nodeType":"YulLiteral","src":"8978:1:24","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"8971:3:24","nodeType":"YulIdentifier","src":"8971:3:24"},"nativeSrc":"8971:9:24","nodeType":"YulFunctionCall","src":"8971:9:24"},"variableNames":[{"name":"i","nativeSrc":"8966:1:24","nodeType":"YulIdentifier","src":"8966:1:24"}]}]},"pre":{"nativeSrc":"8946:3:24","nodeType":"YulBlock","src":"8946:3:24","statements":[]},"src":"8942:185:24"},{"nativeSrc":"9136:11:24","nodeType":"YulAssignment","src":"9136:11:24","value":{"name":"pos","nativeSrc":"9144:3:24","nodeType":"YulIdentifier","src":"9144:3:24"},"variableNames":[{"name":"tail","nativeSrc":"9136:4:24","nodeType":"YulIdentifier","src":"9136:4:24"}]}]},"name":"abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"8532:621:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"8646:9:24","nodeType":"YulTypedName","src":"8646:9:24","type":""},{"name":"value0","nativeSrc":"8657:6:24","nodeType":"YulTypedName","src":"8657:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"8668:4:24","nodeType":"YulTypedName","src":"8668:4:24","type":""}],"src":"8532:621:24"},{"body":{"nativeSrc":"9259:76:24","nodeType":"YulBlock","src":"9259:76:24","statements":[{"nativeSrc":"9269:26:24","nodeType":"YulAssignment","src":"9269:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"9281:9:24","nodeType":"YulIdentifier","src":"9281:9:24"},{"kind":"number","nativeSrc":"9292:2:24","nodeType":"YulLiteral","src":"9292:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9277:3:24","nodeType":"YulIdentifier","src":"9277:3:24"},"nativeSrc":"9277:18:24","nodeType":"YulFunctionCall","src":"9277:18:24"},"variableNames":[{"name":"tail","nativeSrc":"9269:4:24","nodeType":"YulIdentifier","src":"9269:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9311:9:24","nodeType":"YulIdentifier","src":"9311:9:24"},{"name":"value0","nativeSrc":"9322:6:24","nodeType":"YulIdentifier","src":"9322:6:24"}],"functionName":{"name":"mstore","nativeSrc":"9304:6:24","nodeType":"YulIdentifier","src":"9304:6:24"},"nativeSrc":"9304:25:24","nodeType":"YulFunctionCall","src":"9304:25:24"},"nativeSrc":"9304:25:24","nodeType":"YulExpressionStatement","src":"9304:25:24"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nativeSrc":"9158:177:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9228:9:24","nodeType":"YulTypedName","src":"9228:9:24","type":""},{"name":"value0","nativeSrc":"9239:6:24","nodeType":"YulTypedName","src":"9239:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9250:4:24","nodeType":"YulTypedName","src":"9250:4:24","type":""}],"src":"9158:177:24"},{"body":{"nativeSrc":"9441:76:24","nodeType":"YulBlock","src":"9441:76:24","statements":[{"nativeSrc":"9451:26:24","nodeType":"YulAssignment","src":"9451:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"9463:9:24","nodeType":"YulIdentifier","src":"9463:9:24"},{"kind":"number","nativeSrc":"9474:2:24","nodeType":"YulLiteral","src":"9474:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9459:3:24","nodeType":"YulIdentifier","src":"9459:3:24"},"nativeSrc":"9459:18:24","nodeType":"YulFunctionCall","src":"9459:18:24"},"variableNames":[{"name":"tail","nativeSrc":"9451:4:24","nodeType":"YulIdentifier","src":"9451:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"9493:9:24","nodeType":"YulIdentifier","src":"9493:9:24"},{"name":"value0","nativeSrc":"9504:6:24","nodeType":"YulIdentifier","src":"9504:6:24"}],"functionName":{"name":"mstore","nativeSrc":"9486:6:24","nodeType":"YulIdentifier","src":"9486:6:24"},"nativeSrc":"9486:25:24","nodeType":"YulFunctionCall","src":"9486:25:24"},"nativeSrc":"9486:25:24","nodeType":"YulExpressionStatement","src":"9486:25:24"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nativeSrc":"9340:177:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9410:9:24","nodeType":"YulTypedName","src":"9410:9:24","type":""},{"name":"value0","nativeSrc":"9421:6:24","nodeType":"YulTypedName","src":"9421:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"9432:4:24","nodeType":"YulTypedName","src":"9432:4:24","type":""}],"src":"9340:177:24"},{"body":{"nativeSrc":"9609:259:24","nodeType":"YulBlock","src":"9609:259:24","statements":[{"body":{"nativeSrc":"9655:16:24","nodeType":"YulBlock","src":"9655:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"9664:1:24","nodeType":"YulLiteral","src":"9664:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"9667:1:24","nodeType":"YulLiteral","src":"9667:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"9657:6:24","nodeType":"YulIdentifier","src":"9657:6:24"},"nativeSrc":"9657:12:24","nodeType":"YulFunctionCall","src":"9657:12:24"},"nativeSrc":"9657:12:24","nodeType":"YulExpressionStatement","src":"9657:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"9630:7:24","nodeType":"YulIdentifier","src":"9630:7:24"},{"name":"headStart","nativeSrc":"9639:9:24","nodeType":"YulIdentifier","src":"9639:9:24"}],"functionName":{"name":"sub","nativeSrc":"9626:3:24","nodeType":"YulIdentifier","src":"9626:3:24"},"nativeSrc":"9626:23:24","nodeType":"YulFunctionCall","src":"9626:23:24"},{"kind":"number","nativeSrc":"9651:2:24","nodeType":"YulLiteral","src":"9651:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"9622:3:24","nodeType":"YulIdentifier","src":"9622:3:24"},"nativeSrc":"9622:32:24","nodeType":"YulFunctionCall","src":"9622:32:24"},"nativeSrc":"9619:52:24","nodeType":"YulIf","src":"9619:52:24"},{"nativeSrc":"9680:14:24","nodeType":"YulVariableDeclaration","src":"9680:14:24","value":{"kind":"number","nativeSrc":"9693:1:24","nodeType":"YulLiteral","src":"9693:1:24","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"9684:5:24","nodeType":"YulTypedName","src":"9684:5:24","type":""}]},{"nativeSrc":"9703:32:24","nodeType":"YulAssignment","src":"9703:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"9725:9:24","nodeType":"YulIdentifier","src":"9725:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"9712:12:24","nodeType":"YulIdentifier","src":"9712:12:24"},"nativeSrc":"9712:23:24","nodeType":"YulFunctionCall","src":"9712:23:24"},"variableNames":[{"name":"value","nativeSrc":"9703:5:24","nodeType":"YulIdentifier","src":"9703:5:24"}]},{"nativeSrc":"9744:15:24","nodeType":"YulAssignment","src":"9744:15:24","value":{"name":"value","nativeSrc":"9754:5:24","nodeType":"YulIdentifier","src":"9754:5:24"},"variableNames":[{"name":"value0","nativeSrc":"9744:6:24","nodeType":"YulIdentifier","src":"9744:6:24"}]},{"nativeSrc":"9768:16:24","nodeType":"YulVariableDeclaration","src":"9768:16:24","value":{"kind":"number","nativeSrc":"9783:1:24","nodeType":"YulLiteral","src":"9783:1:24","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"9772:7:24","nodeType":"YulTypedName","src":"9772:7:24","type":""}]},{"nativeSrc":"9793:43:24","nodeType":"YulAssignment","src":"9793:43:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"9821:9:24","nodeType":"YulIdentifier","src":"9821:9:24"},{"kind":"number","nativeSrc":"9832:2:24","nodeType":"YulLiteral","src":"9832:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"9817:3:24","nodeType":"YulIdentifier","src":"9817:3:24"},"nativeSrc":"9817:18:24","nodeType":"YulFunctionCall","src":"9817:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"9804:12:24","nodeType":"YulIdentifier","src":"9804:12:24"},"nativeSrc":"9804:32:24","nodeType":"YulFunctionCall","src":"9804:32:24"},"variableNames":[{"name":"value_1","nativeSrc":"9793:7:24","nodeType":"YulIdentifier","src":"9793:7:24"}]},{"nativeSrc":"9845:17:24","nodeType":"YulAssignment","src":"9845:17:24","value":{"name":"value_1","nativeSrc":"9855:7:24","nodeType":"YulIdentifier","src":"9855:7:24"},"variableNames":[{"name":"value1","nativeSrc":"9845:6:24","nodeType":"YulIdentifier","src":"9845:6:24"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256","nativeSrc":"9522:346:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"9567:9:24","nodeType":"YulTypedName","src":"9567:9:24","type":""},{"name":"dataEnd","nativeSrc":"9578:7:24","nodeType":"YulTypedName","src":"9578:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"9590:6:24","nodeType":"YulTypedName","src":"9590:6:24","type":""},{"name":"value1","nativeSrc":"9598:6:24","nodeType":"YulTypedName","src":"9598:6:24","type":""}],"src":"9522:346:24"},{"body":{"nativeSrc":"9931:169:24","nodeType":"YulBlock","src":"9931:169:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"9948:3:24","nodeType":"YulIdentifier","src":"9948:3:24"},{"arguments":[{"name":"value","nativeSrc":"9959:5:24","nodeType":"YulIdentifier","src":"9959:5:24"}],"functionName":{"name":"mload","nativeSrc":"9953:5:24","nodeType":"YulIdentifier","src":"9953:5:24"},"nativeSrc":"9953:12:24","nodeType":"YulFunctionCall","src":"9953:12:24"}],"functionName":{"name":"mstore","nativeSrc":"9941:6:24","nodeType":"YulIdentifier","src":"9941:6:24"},"nativeSrc":"9941:25:24","nodeType":"YulFunctionCall","src":"9941:25:24"},"nativeSrc":"9941:25:24","nodeType":"YulExpressionStatement","src":"9941:25:24"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"9986:3:24","nodeType":"YulIdentifier","src":"9986:3:24"},{"kind":"number","nativeSrc":"9991:4:24","nodeType":"YulLiteral","src":"9991:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"9982:3:24","nodeType":"YulIdentifier","src":"9982:3:24"},"nativeSrc":"9982:14:24","nodeType":"YulFunctionCall","src":"9982:14:24"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"10008:5:24","nodeType":"YulIdentifier","src":"10008:5:24"},{"kind":"number","nativeSrc":"10015:4:24","nodeType":"YulLiteral","src":"10015:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"10004:3:24","nodeType":"YulIdentifier","src":"10004:3:24"},"nativeSrc":"10004:16:24","nodeType":"YulFunctionCall","src":"10004:16:24"}],"functionName":{"name":"mload","nativeSrc":"9998:5:24","nodeType":"YulIdentifier","src":"9998:5:24"},"nativeSrc":"9998:23:24","nodeType":"YulFunctionCall","src":"9998:23:24"}],"functionName":{"name":"mstore","nativeSrc":"9975:6:24","nodeType":"YulIdentifier","src":"9975:6:24"},"nativeSrc":"9975:47:24","nodeType":"YulFunctionCall","src":"9975:47:24"},"nativeSrc":"9975:47:24","nodeType":"YulExpressionStatement","src":"9975:47:24"},{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"10042:3:24","nodeType":"YulIdentifier","src":"10042:3:24"},{"kind":"number","nativeSrc":"10047:4:24","nodeType":"YulLiteral","src":"10047:4:24","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"10038:3:24","nodeType":"YulIdentifier","src":"10038:3:24"},"nativeSrc":"10038:14:24","nodeType":"YulFunctionCall","src":"10038:14:24"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"value","nativeSrc":"10078:5:24","nodeType":"YulIdentifier","src":"10078:5:24"},{"kind":"number","nativeSrc":"10085:4:24","nodeType":"YulLiteral","src":"10085:4:24","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"10074:3:24","nodeType":"YulIdentifier","src":"10074:3:24"},"nativeSrc":"10074:16:24","nodeType":"YulFunctionCall","src":"10074:16:24"}],"functionName":{"name":"mload","nativeSrc":"10068:5:24","nodeType":"YulIdentifier","src":"10068:5:24"},"nativeSrc":"10068:23:24","nodeType":"YulFunctionCall","src":"10068:23:24"}],"functionName":{"name":"iszero","nativeSrc":"10061:6:24","nodeType":"YulIdentifier","src":"10061:6:24"},"nativeSrc":"10061:31:24","nodeType":"YulFunctionCall","src":"10061:31:24"}],"functionName":{"name":"iszero","nativeSrc":"10054:6:24","nodeType":"YulIdentifier","src":"10054:6:24"},"nativeSrc":"10054:39:24","nodeType":"YulFunctionCall","src":"10054:39:24"}],"functionName":{"name":"mstore","nativeSrc":"10031:6:24","nodeType":"YulIdentifier","src":"10031:6:24"},"nativeSrc":"10031:63:24","nodeType":"YulFunctionCall","src":"10031:63:24"},"nativeSrc":"10031:63:24","nodeType":"YulExpressionStatement","src":"10031:63:24"}]},"name":"abi_encode_struct_ViewPermission","nativeSrc":"9873:227:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"9915:5:24","nodeType":"YulTypedName","src":"9915:5:24","type":""},{"name":"pos","nativeSrc":"9922:3:24","nodeType":"YulTypedName","src":"9922:3:24","type":""}],"src":"9873:227:24"},{"body":{"nativeSrc":"10270:102:24","nodeType":"YulBlock","src":"10270:102:24","statements":[{"nativeSrc":"10280:26:24","nodeType":"YulAssignment","src":"10280:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"10292:9:24","nodeType":"YulIdentifier","src":"10292:9:24"},{"kind":"number","nativeSrc":"10303:2:24","nodeType":"YulLiteral","src":"10303:2:24","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"10288:3:24","nodeType":"YulIdentifier","src":"10288:3:24"},"nativeSrc":"10288:18:24","nodeType":"YulFunctionCall","src":"10288:18:24"},"variableNames":[{"name":"tail","nativeSrc":"10280:4:24","nodeType":"YulIdentifier","src":"10280:4:24"}]},{"expression":{"arguments":[{"name":"value0","nativeSrc":"10348:6:24","nodeType":"YulIdentifier","src":"10348:6:24"},{"name":"headStart","nativeSrc":"10356:9:24","nodeType":"YulIdentifier","src":"10356:9:24"}],"functionName":{"name":"abi_encode_struct_ViewPermission","nativeSrc":"10315:32:24","nodeType":"YulIdentifier","src":"10315:32:24"},"nativeSrc":"10315:51:24","nodeType":"YulFunctionCall","src":"10315:51:24"},"nativeSrc":"10315:51:24","nodeType":"YulExpressionStatement","src":"10315:51:24"}]},"name":"abi_encode_tuple_t_struct$_ViewPermission_$4075_memory_ptr__to_t_struct$_ViewPermission_$4075_memory_ptr__fromStack_reversed","nativeSrc":"10105:267:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10239:9:24","nodeType":"YulTypedName","src":"10239:9:24","type":""},{"name":"value0","nativeSrc":"10250:6:24","nodeType":"YulTypedName","src":"10250:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"10261:4:24","nodeType":"YulTypedName","src":"10261:4:24","type":""}],"src":"10105:267:24"},{"body":{"nativeSrc":"10531:571:24","nodeType":"YulBlock","src":"10531:571:24","statements":[{"body":{"nativeSrc":"10577:16:24","nodeType":"YulBlock","src":"10577:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10586:1:24","nodeType":"YulLiteral","src":"10586:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"10589:1:24","nodeType":"YulLiteral","src":"10589:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10579:6:24","nodeType":"YulIdentifier","src":"10579:6:24"},"nativeSrc":"10579:12:24","nodeType":"YulFunctionCall","src":"10579:12:24"},"nativeSrc":"10579:12:24","nodeType":"YulExpressionStatement","src":"10579:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"10552:7:24","nodeType":"YulIdentifier","src":"10552:7:24"},{"name":"headStart","nativeSrc":"10561:9:24","nodeType":"YulIdentifier","src":"10561:9:24"}],"functionName":{"name":"sub","nativeSrc":"10548:3:24","nodeType":"YulIdentifier","src":"10548:3:24"},"nativeSrc":"10548:23:24","nodeType":"YulFunctionCall","src":"10548:23:24"},{"kind":"number","nativeSrc":"10573:2:24","nodeType":"YulLiteral","src":"10573:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"10544:3:24","nodeType":"YulIdentifier","src":"10544:3:24"},"nativeSrc":"10544:32:24","nodeType":"YulFunctionCall","src":"10544:32:24"},"nativeSrc":"10541:52:24","nodeType":"YulIf","src":"10541:52:24"},{"nativeSrc":"10602:37:24","nodeType":"YulVariableDeclaration","src":"10602:37:24","value":{"arguments":[{"name":"headStart","nativeSrc":"10629:9:24","nodeType":"YulIdentifier","src":"10629:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"10616:12:24","nodeType":"YulIdentifier","src":"10616:12:24"},"nativeSrc":"10616:23:24","nodeType":"YulFunctionCall","src":"10616:23:24"},"variables":[{"name":"offset","nativeSrc":"10606:6:24","nodeType":"YulTypedName","src":"10606:6:24","type":""}]},{"body":{"nativeSrc":"10682:16:24","nodeType":"YulBlock","src":"10682:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"10691:1:24","nodeType":"YulLiteral","src":"10691:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"10694:1:24","nodeType":"YulLiteral","src":"10694:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"10684:6:24","nodeType":"YulIdentifier","src":"10684:6:24"},"nativeSrc":"10684:12:24","nodeType":"YulFunctionCall","src":"10684:12:24"},"nativeSrc":"10684:12:24","nodeType":"YulExpressionStatement","src":"10684:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"10654:6:24","nodeType":"YulIdentifier","src":"10654:6:24"},{"kind":"number","nativeSrc":"10662:18:24","nodeType":"YulLiteral","src":"10662:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10651:2:24","nodeType":"YulIdentifier","src":"10651:2:24"},"nativeSrc":"10651:30:24","nodeType":"YulFunctionCall","src":"10651:30:24"},"nativeSrc":"10648:50:24","nodeType":"YulIf","src":"10648:50:24"},{"nativeSrc":"10707:71:24","nodeType":"YulAssignment","src":"10707:71:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10750:9:24","nodeType":"YulIdentifier","src":"10750:9:24"},{"name":"offset","nativeSrc":"10761:6:24","nodeType":"YulIdentifier","src":"10761:6:24"}],"functionName":{"name":"add","nativeSrc":"10746:3:24","nodeType":"YulIdentifier","src":"10746:3:24"},"nativeSrc":"10746:22:24","nodeType":"YulFunctionCall","src":"10746:22:24"},{"name":"dataEnd","nativeSrc":"10770:7:24","nodeType":"YulIdentifier","src":"10770:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"10717:28:24","nodeType":"YulIdentifier","src":"10717:28:24"},"nativeSrc":"10717:61:24","nodeType":"YulFunctionCall","src":"10717:61:24"},"variableNames":[{"name":"value0","nativeSrc":"10707:6:24","nodeType":"YulIdentifier","src":"10707:6:24"}]},{"nativeSrc":"10787:45:24","nodeType":"YulVariableDeclaration","src":"10787:45:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10817:9:24","nodeType":"YulIdentifier","src":"10817:9:24"},{"kind":"number","nativeSrc":"10828:2:24","nodeType":"YulLiteral","src":"10828:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"10813:3:24","nodeType":"YulIdentifier","src":"10813:3:24"},"nativeSrc":"10813:18:24","nodeType":"YulFunctionCall","src":"10813:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"10800:12:24","nodeType":"YulIdentifier","src":"10800:12:24"},"nativeSrc":"10800:32:24","nodeType":"YulFunctionCall","src":"10800:32:24"},"variables":[{"name":"value","nativeSrc":"10791:5:24","nodeType":"YulTypedName","src":"10791:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"10866:5:24","nodeType":"YulIdentifier","src":"10866:5:24"}],"functionName":{"name":"validator_revert_address","nativeSrc":"10841:24:24","nodeType":"YulIdentifier","src":"10841:24:24"},"nativeSrc":"10841:31:24","nodeType":"YulFunctionCall","src":"10841:31:24"},"nativeSrc":"10841:31:24","nodeType":"YulExpressionStatement","src":"10841:31:24"},{"nativeSrc":"10881:15:24","nodeType":"YulAssignment","src":"10881:15:24","value":{"name":"value","nativeSrc":"10891:5:24","nodeType":"YulIdentifier","src":"10891:5:24"},"variableNames":[{"name":"value1","nativeSrc":"10881:6:24","nodeType":"YulIdentifier","src":"10881:6:24"}]},{"nativeSrc":"10905:48:24","nodeType":"YulVariableDeclaration","src":"10905:48:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"10938:9:24","nodeType":"YulIdentifier","src":"10938:9:24"},{"kind":"number","nativeSrc":"10949:2:24","nodeType":"YulLiteral","src":"10949:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"10934:3:24","nodeType":"YulIdentifier","src":"10934:3:24"},"nativeSrc":"10934:18:24","nodeType":"YulFunctionCall","src":"10934:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"10921:12:24","nodeType":"YulIdentifier","src":"10921:12:24"},"nativeSrc":"10921:32:24","nodeType":"YulFunctionCall","src":"10921:32:24"},"variables":[{"name":"offset_1","nativeSrc":"10909:8:24","nodeType":"YulTypedName","src":"10909:8:24","type":""}]},{"body":{"nativeSrc":"10998:16:24","nodeType":"YulBlock","src":"10998:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11007:1:24","nodeType":"YulLiteral","src":"11007:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"11010:1:24","nodeType":"YulLiteral","src":"11010:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11000:6:24","nodeType":"YulIdentifier","src":"11000:6:24"},"nativeSrc":"11000:12:24","nodeType":"YulFunctionCall","src":"11000:12:24"},"nativeSrc":"11000:12:24","nodeType":"YulExpressionStatement","src":"11000:12:24"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"10968:8:24","nodeType":"YulIdentifier","src":"10968:8:24"},{"kind":"number","nativeSrc":"10978:18:24","nodeType":"YulLiteral","src":"10978:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"10965:2:24","nodeType":"YulIdentifier","src":"10965:2:24"},"nativeSrc":"10965:32:24","nodeType":"YulFunctionCall","src":"10965:32:24"},"nativeSrc":"10962:52:24","nodeType":"YulIf","src":"10962:52:24"},{"nativeSrc":"11023:73:24","nodeType":"YulAssignment","src":"11023:73:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11066:9:24","nodeType":"YulIdentifier","src":"11066:9:24"},{"name":"offset_1","nativeSrc":"11077:8:24","nodeType":"YulIdentifier","src":"11077:8:24"}],"functionName":{"name":"add","nativeSrc":"11062:3:24","nodeType":"YulIdentifier","src":"11062:3:24"},"nativeSrc":"11062:24:24","nodeType":"YulFunctionCall","src":"11062:24:24"},{"name":"dataEnd","nativeSrc":"11088:7:24","nodeType":"YulIdentifier","src":"11088:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"11033:28:24","nodeType":"YulIdentifier","src":"11033:28:24"},"nativeSrc":"11033:63:24","nodeType":"YulFunctionCall","src":"11033:63:24"},"variableNames":[{"name":"value2","nativeSrc":"11023:6:24","nodeType":"YulIdentifier","src":"11023:6:24"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"10377:725:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"10481:9:24","nodeType":"YulTypedName","src":"10481:9:24","type":""},{"name":"dataEnd","nativeSrc":"10492:7:24","nodeType":"YulTypedName","src":"10492:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"10504:6:24","nodeType":"YulTypedName","src":"10504:6:24","type":""},{"name":"value1","nativeSrc":"10512:6:24","nodeType":"YulTypedName","src":"10512:6:24","type":""},{"name":"value2","nativeSrc":"10520:6:24","nodeType":"YulTypedName","src":"10520:6:24","type":""}],"src":"10377:725:24"},{"body":{"nativeSrc":"11236:474:24","nodeType":"YulBlock","src":"11236:474:24","statements":[{"body":{"nativeSrc":"11282:16:24","nodeType":"YulBlock","src":"11282:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11291:1:24","nodeType":"YulLiteral","src":"11291:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"11294:1:24","nodeType":"YulLiteral","src":"11294:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11284:6:24","nodeType":"YulIdentifier","src":"11284:6:24"},"nativeSrc":"11284:12:24","nodeType":"YulFunctionCall","src":"11284:12:24"},"nativeSrc":"11284:12:24","nodeType":"YulExpressionStatement","src":"11284:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"11257:7:24","nodeType":"YulIdentifier","src":"11257:7:24"},{"name":"headStart","nativeSrc":"11266:9:24","nodeType":"YulIdentifier","src":"11266:9:24"}],"functionName":{"name":"sub","nativeSrc":"11253:3:24","nodeType":"YulIdentifier","src":"11253:3:24"},"nativeSrc":"11253:23:24","nodeType":"YulFunctionCall","src":"11253:23:24"},{"kind":"number","nativeSrc":"11278:2:24","nodeType":"YulLiteral","src":"11278:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"11249:3:24","nodeType":"YulIdentifier","src":"11249:3:24"},"nativeSrc":"11249:32:24","nodeType":"YulFunctionCall","src":"11249:32:24"},"nativeSrc":"11246:52:24","nodeType":"YulIf","src":"11246:52:24"},{"nativeSrc":"11307:37:24","nodeType":"YulVariableDeclaration","src":"11307:37:24","value":{"arguments":[{"name":"headStart","nativeSrc":"11334:9:24","nodeType":"YulIdentifier","src":"11334:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"11321:12:24","nodeType":"YulIdentifier","src":"11321:12:24"},"nativeSrc":"11321:23:24","nodeType":"YulFunctionCall","src":"11321:23:24"},"variables":[{"name":"offset","nativeSrc":"11311:6:24","nodeType":"YulTypedName","src":"11311:6:24","type":""}]},{"body":{"nativeSrc":"11387:16:24","nodeType":"YulBlock","src":"11387:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"11396:1:24","nodeType":"YulLiteral","src":"11396:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"11399:1:24","nodeType":"YulLiteral","src":"11399:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"11389:6:24","nodeType":"YulIdentifier","src":"11389:6:24"},"nativeSrc":"11389:12:24","nodeType":"YulFunctionCall","src":"11389:12:24"},"nativeSrc":"11389:12:24","nodeType":"YulExpressionStatement","src":"11389:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"11359:6:24","nodeType":"YulIdentifier","src":"11359:6:24"},{"kind":"number","nativeSrc":"11367:18:24","nodeType":"YulLiteral","src":"11367:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"11356:2:24","nodeType":"YulIdentifier","src":"11356:2:24"},"nativeSrc":"11356:30:24","nodeType":"YulFunctionCall","src":"11356:30:24"},"nativeSrc":"11353:50:24","nodeType":"YulIf","src":"11353:50:24"},{"nativeSrc":"11412:71:24","nodeType":"YulAssignment","src":"11412:71:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11455:9:24","nodeType":"YulIdentifier","src":"11455:9:24"},{"name":"offset","nativeSrc":"11466:6:24","nodeType":"YulIdentifier","src":"11466:6:24"}],"functionName":{"name":"add","nativeSrc":"11451:3:24","nodeType":"YulIdentifier","src":"11451:3:24"},"nativeSrc":"11451:22:24","nodeType":"YulFunctionCall","src":"11451:22:24"},{"name":"dataEnd","nativeSrc":"11475:7:24","nodeType":"YulIdentifier","src":"11475:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"11422:28:24","nodeType":"YulIdentifier","src":"11422:28:24"},"nativeSrc":"11422:61:24","nodeType":"YulFunctionCall","src":"11422:61:24"},"variableNames":[{"name":"value0","nativeSrc":"11412:6:24","nodeType":"YulIdentifier","src":"11412:6:24"}]},{"nativeSrc":"11492:45:24","nodeType":"YulVariableDeclaration","src":"11492:45:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11522:9:24","nodeType":"YulIdentifier","src":"11522:9:24"},{"kind":"number","nativeSrc":"11533:2:24","nodeType":"YulLiteral","src":"11533:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11518:3:24","nodeType":"YulIdentifier","src":"11518:3:24"},"nativeSrc":"11518:18:24","nodeType":"YulFunctionCall","src":"11518:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"11505:12:24","nodeType":"YulIdentifier","src":"11505:12:24"},"nativeSrc":"11505:32:24","nodeType":"YulFunctionCall","src":"11505:32:24"},"variables":[{"name":"value","nativeSrc":"11496:5:24","nodeType":"YulTypedName","src":"11496:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"11571:5:24","nodeType":"YulIdentifier","src":"11571:5:24"}],"functionName":{"name":"validator_revert_address","nativeSrc":"11546:24:24","nodeType":"YulIdentifier","src":"11546:24:24"},"nativeSrc":"11546:31:24","nodeType":"YulFunctionCall","src":"11546:31:24"},"nativeSrc":"11546:31:24","nodeType":"YulExpressionStatement","src":"11546:31:24"},{"nativeSrc":"11586:15:24","nodeType":"YulAssignment","src":"11586:15:24","value":{"name":"value","nativeSrc":"11596:5:24","nodeType":"YulIdentifier","src":"11596:5:24"},"variableNames":[{"name":"value1","nativeSrc":"11586:6:24","nodeType":"YulIdentifier","src":"11586:6:24"}]},{"nativeSrc":"11610:16:24","nodeType":"YulVariableDeclaration","src":"11610:16:24","value":{"kind":"number","nativeSrc":"11625:1:24","nodeType":"YulLiteral","src":"11625:1:24","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"11614:7:24","nodeType":"YulTypedName","src":"11614:7:24","type":""}]},{"nativeSrc":"11635:43:24","nodeType":"YulAssignment","src":"11635:43:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"11663:9:24","nodeType":"YulIdentifier","src":"11663:9:24"},{"kind":"number","nativeSrc":"11674:2:24","nodeType":"YulLiteral","src":"11674:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"11659:3:24","nodeType":"YulIdentifier","src":"11659:3:24"},"nativeSrc":"11659:18:24","nodeType":"YulFunctionCall","src":"11659:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"11646:12:24","nodeType":"YulIdentifier","src":"11646:12:24"},"nativeSrc":"11646:32:24","nodeType":"YulFunctionCall","src":"11646:32:24"},"variableNames":[{"name":"value_1","nativeSrc":"11635:7:24","nodeType":"YulIdentifier","src":"11635:7:24"}]},{"nativeSrc":"11687:17:24","nodeType":"YulAssignment","src":"11687:17:24","value":{"name":"value_1","nativeSrc":"11697:7:24","nodeType":"YulIdentifier","src":"11697:7:24"},"variableNames":[{"name":"value2","nativeSrc":"11687:6:24","nodeType":"YulIdentifier","src":"11687:6:24"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256","nativeSrc":"11107:603:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"11186:9:24","nodeType":"YulTypedName","src":"11186:9:24","type":""},{"name":"dataEnd","nativeSrc":"11197:7:24","nodeType":"YulTypedName","src":"11197:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"11209:6:24","nodeType":"YulTypedName","src":"11209:6:24","type":""},{"name":"value1","nativeSrc":"11217:6:24","nodeType":"YulTypedName","src":"11217:6:24","type":""},{"name":"value2","nativeSrc":"11225:6:24","nodeType":"YulTypedName","src":"11225:6:24","type":""}],"src":"11107:603:24"},{"body":{"nativeSrc":"11781:184:24","nodeType":"YulBlock","src":"11781:184:24","statements":[{"nativeSrc":"11791:10:24","nodeType":"YulVariableDeclaration","src":"11791:10:24","value":{"kind":"number","nativeSrc":"11800:1:24","nodeType":"YulLiteral","src":"11800:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"11795:1:24","nodeType":"YulTypedName","src":"11795:1:24","type":""}]},{"body":{"nativeSrc":"11860:63:24","nodeType":"YulBlock","src":"11860:63:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"11885:3:24","nodeType":"YulIdentifier","src":"11885:3:24"},{"name":"i","nativeSrc":"11890:1:24","nodeType":"YulIdentifier","src":"11890:1:24"}],"functionName":{"name":"add","nativeSrc":"11881:3:24","nodeType":"YulIdentifier","src":"11881:3:24"},"nativeSrc":"11881:11:24","nodeType":"YulFunctionCall","src":"11881:11:24"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"11904:3:24","nodeType":"YulIdentifier","src":"11904:3:24"},{"name":"i","nativeSrc":"11909:1:24","nodeType":"YulIdentifier","src":"11909:1:24"}],"functionName":{"name":"add","nativeSrc":"11900:3:24","nodeType":"YulIdentifier","src":"11900:3:24"},"nativeSrc":"11900:11:24","nodeType":"YulFunctionCall","src":"11900:11:24"}],"functionName":{"name":"mload","nativeSrc":"11894:5:24","nodeType":"YulIdentifier","src":"11894:5:24"},"nativeSrc":"11894:18:24","nodeType":"YulFunctionCall","src":"11894:18:24"}],"functionName":{"name":"mstore","nativeSrc":"11874:6:24","nodeType":"YulIdentifier","src":"11874:6:24"},"nativeSrc":"11874:39:24","nodeType":"YulFunctionCall","src":"11874:39:24"},"nativeSrc":"11874:39:24","nodeType":"YulExpressionStatement","src":"11874:39:24"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"11821:1:24","nodeType":"YulIdentifier","src":"11821:1:24"},{"name":"length","nativeSrc":"11824:6:24","nodeType":"YulIdentifier","src":"11824:6:24"}],"functionName":{"name":"lt","nativeSrc":"11818:2:24","nodeType":"YulIdentifier","src":"11818:2:24"},"nativeSrc":"11818:13:24","nodeType":"YulFunctionCall","src":"11818:13:24"},"nativeSrc":"11810:113:24","nodeType":"YulForLoop","post":{"nativeSrc":"11832:19:24","nodeType":"YulBlock","src":"11832:19:24","statements":[{"nativeSrc":"11834:15:24","nodeType":"YulAssignment","src":"11834:15:24","value":{"arguments":[{"name":"i","nativeSrc":"11843:1:24","nodeType":"YulIdentifier","src":"11843:1:24"},{"kind":"number","nativeSrc":"11846:2:24","nodeType":"YulLiteral","src":"11846:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"11839:3:24","nodeType":"YulIdentifier","src":"11839:3:24"},"nativeSrc":"11839:10:24","nodeType":"YulFunctionCall","src":"11839:10:24"},"variableNames":[{"name":"i","nativeSrc":"11834:1:24","nodeType":"YulIdentifier","src":"11834:1:24"}]}]},"pre":{"nativeSrc":"11814:3:24","nodeType":"YulBlock","src":"11814:3:24","statements":[]},"src":"11810:113:24"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"11943:3:24","nodeType":"YulIdentifier","src":"11943:3:24"},{"name":"length","nativeSrc":"11948:6:24","nodeType":"YulIdentifier","src":"11948:6:24"}],"functionName":{"name":"add","nativeSrc":"11939:3:24","nodeType":"YulIdentifier","src":"11939:3:24"},"nativeSrc":"11939:16:24","nodeType":"YulFunctionCall","src":"11939:16:24"},{"kind":"number","nativeSrc":"11957:1:24","nodeType":"YulLiteral","src":"11957:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"11932:6:24","nodeType":"YulIdentifier","src":"11932:6:24"},"nativeSrc":"11932:27:24","nodeType":"YulFunctionCall","src":"11932:27:24"},"nativeSrc":"11932:27:24","nodeType":"YulExpressionStatement","src":"11932:27:24"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"11715:250:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"11759:3:24","nodeType":"YulTypedName","src":"11759:3:24","type":""},{"name":"dst","nativeSrc":"11764:3:24","nodeType":"YulTypedName","src":"11764:3:24","type":""},{"name":"length","nativeSrc":"11769:6:24","nodeType":"YulTypedName","src":"11769:6:24","type":""}],"src":"11715:250:24"},{"body":{"nativeSrc":"12091:275:24","nodeType":"YulBlock","src":"12091:275:24","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"12108:9:24","nodeType":"YulIdentifier","src":"12108:9:24"},{"kind":"number","nativeSrc":"12119:2:24","nodeType":"YulLiteral","src":"12119:2:24","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"12101:6:24","nodeType":"YulIdentifier","src":"12101:6:24"},"nativeSrc":"12101:21:24","nodeType":"YulFunctionCall","src":"12101:21:24"},"nativeSrc":"12101:21:24","nodeType":"YulExpressionStatement","src":"12101:21:24"},{"nativeSrc":"12131:27:24","nodeType":"YulVariableDeclaration","src":"12131:27:24","value":{"arguments":[{"name":"value0","nativeSrc":"12151:6:24","nodeType":"YulIdentifier","src":"12151:6:24"}],"functionName":{"name":"mload","nativeSrc":"12145:5:24","nodeType":"YulIdentifier","src":"12145:5:24"},"nativeSrc":"12145:13:24","nodeType":"YulFunctionCall","src":"12145:13:24"},"variables":[{"name":"length","nativeSrc":"12135:6:24","nodeType":"YulTypedName","src":"12135:6:24","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12178:9:24","nodeType":"YulIdentifier","src":"12178:9:24"},{"kind":"number","nativeSrc":"12189:2:24","nodeType":"YulLiteral","src":"12189:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12174:3:24","nodeType":"YulIdentifier","src":"12174:3:24"},"nativeSrc":"12174:18:24","nodeType":"YulFunctionCall","src":"12174:18:24"},{"name":"length","nativeSrc":"12194:6:24","nodeType":"YulIdentifier","src":"12194:6:24"}],"functionName":{"name":"mstore","nativeSrc":"12167:6:24","nodeType":"YulIdentifier","src":"12167:6:24"},"nativeSrc":"12167:34:24","nodeType":"YulFunctionCall","src":"12167:34:24"},"nativeSrc":"12167:34:24","nodeType":"YulExpressionStatement","src":"12167:34:24"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"12249:6:24","nodeType":"YulIdentifier","src":"12249:6:24"},{"kind":"number","nativeSrc":"12257:2:24","nodeType":"YulLiteral","src":"12257:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12245:3:24","nodeType":"YulIdentifier","src":"12245:3:24"},"nativeSrc":"12245:15:24","nodeType":"YulFunctionCall","src":"12245:15:24"},{"arguments":[{"name":"headStart","nativeSrc":"12266:9:24","nodeType":"YulIdentifier","src":"12266:9:24"},{"kind":"number","nativeSrc":"12277:2:24","nodeType":"YulLiteral","src":"12277:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12262:3:24","nodeType":"YulIdentifier","src":"12262:3:24"},"nativeSrc":"12262:18:24","nodeType":"YulFunctionCall","src":"12262:18:24"},{"name":"length","nativeSrc":"12282:6:24","nodeType":"YulIdentifier","src":"12282:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"12210:34:24","nodeType":"YulIdentifier","src":"12210:34:24"},"nativeSrc":"12210:79:24","nodeType":"YulFunctionCall","src":"12210:79:24"},"nativeSrc":"12210:79:24","nodeType":"YulExpressionStatement","src":"12210:79:24"},{"nativeSrc":"12298:62:24","nodeType":"YulAssignment","src":"12298:62:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12314:9:24","nodeType":"YulIdentifier","src":"12314:9:24"},{"arguments":[{"arguments":[{"name":"length","nativeSrc":"12333:6:24","nodeType":"YulIdentifier","src":"12333:6:24"},{"kind":"number","nativeSrc":"12341:2:24","nodeType":"YulLiteral","src":"12341:2:24","type":"","value":"31"}],"functionName":{"name":"add","nativeSrc":"12329:3:24","nodeType":"YulIdentifier","src":"12329:3:24"},"nativeSrc":"12329:15:24","nodeType":"YulFunctionCall","src":"12329:15:24"},{"arguments":[{"kind":"number","nativeSrc":"12350:2:24","nodeType":"YulLiteral","src":"12350:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"12346:3:24","nodeType":"YulIdentifier","src":"12346:3:24"},"nativeSrc":"12346:7:24","nodeType":"YulFunctionCall","src":"12346:7:24"}],"functionName":{"name":"and","nativeSrc":"12325:3:24","nodeType":"YulIdentifier","src":"12325:3:24"},"nativeSrc":"12325:29:24","nodeType":"YulFunctionCall","src":"12325:29:24"}],"functionName":{"name":"add","nativeSrc":"12310:3:24","nodeType":"YulIdentifier","src":"12310:3:24"},"nativeSrc":"12310:45:24","nodeType":"YulFunctionCall","src":"12310:45:24"},{"kind":"number","nativeSrc":"12357:2:24","nodeType":"YulLiteral","src":"12357:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12306:3:24","nodeType":"YulIdentifier","src":"12306:3:24"},"nativeSrc":"12306:54:24","nodeType":"YulFunctionCall","src":"12306:54:24"},"variableNames":[{"name":"tail","nativeSrc":"12298:4:24","nodeType":"YulIdentifier","src":"12298:4:24"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nativeSrc":"11970:396:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12060:9:24","nodeType":"YulTypedName","src":"12060:9:24","type":""},{"name":"value0","nativeSrc":"12071:6:24","nodeType":"YulTypedName","src":"12071:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"12082:4:24","nodeType":"YulTypedName","src":"12082:4:24","type":""}],"src":"11970:396:24"},{"body":{"nativeSrc":"12506:588:24","nodeType":"YulBlock","src":"12506:588:24","statements":[{"body":{"nativeSrc":"12553:16:24","nodeType":"YulBlock","src":"12553:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"12562:1:24","nodeType":"YulLiteral","src":"12562:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"12565:1:24","nodeType":"YulLiteral","src":"12565:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"12555:6:24","nodeType":"YulIdentifier","src":"12555:6:24"},"nativeSrc":"12555:12:24","nodeType":"YulFunctionCall","src":"12555:12:24"},"nativeSrc":"12555:12:24","nodeType":"YulExpressionStatement","src":"12555:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"12527:7:24","nodeType":"YulIdentifier","src":"12527:7:24"},{"name":"headStart","nativeSrc":"12536:9:24","nodeType":"YulIdentifier","src":"12536:9:24"}],"functionName":{"name":"sub","nativeSrc":"12523:3:24","nodeType":"YulIdentifier","src":"12523:3:24"},"nativeSrc":"12523:23:24","nodeType":"YulFunctionCall","src":"12523:23:24"},{"kind":"number","nativeSrc":"12548:3:24","nodeType":"YulLiteral","src":"12548:3:24","type":"","value":"160"}],"functionName":{"name":"slt","nativeSrc":"12519:3:24","nodeType":"YulIdentifier","src":"12519:3:24"},"nativeSrc":"12519:33:24","nodeType":"YulFunctionCall","src":"12519:33:24"},"nativeSrc":"12516:53:24","nodeType":"YulIf","src":"12516:53:24"},{"nativeSrc":"12578:14:24","nodeType":"YulVariableDeclaration","src":"12578:14:24","value":{"kind":"number","nativeSrc":"12591:1:24","nodeType":"YulLiteral","src":"12591:1:24","type":"","value":"0"},"variables":[{"name":"value","nativeSrc":"12582:5:24","nodeType":"YulTypedName","src":"12582:5:24","type":""}]},{"nativeSrc":"12601:32:24","nodeType":"YulAssignment","src":"12601:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"12623:9:24","nodeType":"YulIdentifier","src":"12623:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"12610:12:24","nodeType":"YulIdentifier","src":"12610:12:24"},"nativeSrc":"12610:23:24","nodeType":"YulFunctionCall","src":"12610:23:24"},"variableNames":[{"name":"value","nativeSrc":"12601:5:24","nodeType":"YulIdentifier","src":"12601:5:24"}]},{"nativeSrc":"12642:15:24","nodeType":"YulAssignment","src":"12642:15:24","value":{"name":"value","nativeSrc":"12652:5:24","nodeType":"YulIdentifier","src":"12652:5:24"},"variableNames":[{"name":"value0","nativeSrc":"12642:6:24","nodeType":"YulIdentifier","src":"12642:6:24"}]},{"nativeSrc":"12666:16:24","nodeType":"YulVariableDeclaration","src":"12666:16:24","value":{"kind":"number","nativeSrc":"12681:1:24","nodeType":"YulLiteral","src":"12681:1:24","type":"","value":"0"},"variables":[{"name":"value_1","nativeSrc":"12670:7:24","nodeType":"YulTypedName","src":"12670:7:24","type":""}]},{"nativeSrc":"12691:43:24","nodeType":"YulAssignment","src":"12691:43:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12719:9:24","nodeType":"YulIdentifier","src":"12719:9:24"},{"kind":"number","nativeSrc":"12730:2:24","nodeType":"YulLiteral","src":"12730:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"12715:3:24","nodeType":"YulIdentifier","src":"12715:3:24"},"nativeSrc":"12715:18:24","nodeType":"YulFunctionCall","src":"12715:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"12702:12:24","nodeType":"YulIdentifier","src":"12702:12:24"},"nativeSrc":"12702:32:24","nodeType":"YulFunctionCall","src":"12702:32:24"},"variableNames":[{"name":"value_1","nativeSrc":"12691:7:24","nodeType":"YulIdentifier","src":"12691:7:24"}]},{"nativeSrc":"12743:17:24","nodeType":"YulAssignment","src":"12743:17:24","value":{"name":"value_1","nativeSrc":"12753:7:24","nodeType":"YulIdentifier","src":"12753:7:24"},"variableNames":[{"name":"value1","nativeSrc":"12743:6:24","nodeType":"YulIdentifier","src":"12743:6:24"}]},{"nativeSrc":"12769:16:24","nodeType":"YulVariableDeclaration","src":"12769:16:24","value":{"kind":"number","nativeSrc":"12784:1:24","nodeType":"YulLiteral","src":"12784:1:24","type":"","value":"0"},"variables":[{"name":"value_2","nativeSrc":"12773:7:24","nodeType":"YulTypedName","src":"12773:7:24","type":""}]},{"nativeSrc":"12794:43:24","nodeType":"YulAssignment","src":"12794:43:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12822:9:24","nodeType":"YulIdentifier","src":"12822:9:24"},{"kind":"number","nativeSrc":"12833:2:24","nodeType":"YulLiteral","src":"12833:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"12818:3:24","nodeType":"YulIdentifier","src":"12818:3:24"},"nativeSrc":"12818:18:24","nodeType":"YulFunctionCall","src":"12818:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"12805:12:24","nodeType":"YulIdentifier","src":"12805:12:24"},"nativeSrc":"12805:32:24","nodeType":"YulFunctionCall","src":"12805:32:24"},"variableNames":[{"name":"value_2","nativeSrc":"12794:7:24","nodeType":"YulIdentifier","src":"12794:7:24"}]},{"nativeSrc":"12846:17:24","nodeType":"YulAssignment","src":"12846:17:24","value":{"name":"value_2","nativeSrc":"12856:7:24","nodeType":"YulIdentifier","src":"12856:7:24"},"variableNames":[{"name":"value2","nativeSrc":"12846:6:24","nodeType":"YulIdentifier","src":"12846:6:24"}]},{"nativeSrc":"12872:16:24","nodeType":"YulVariableDeclaration","src":"12872:16:24","value":{"kind":"number","nativeSrc":"12887:1:24","nodeType":"YulLiteral","src":"12887:1:24","type":"","value":"0"},"variables":[{"name":"value_3","nativeSrc":"12876:7:24","nodeType":"YulTypedName","src":"12876:7:24","type":""}]},{"nativeSrc":"12897:43:24","nodeType":"YulAssignment","src":"12897:43:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"12925:9:24","nodeType":"YulIdentifier","src":"12925:9:24"},{"kind":"number","nativeSrc":"12936:2:24","nodeType":"YulLiteral","src":"12936:2:24","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"12921:3:24","nodeType":"YulIdentifier","src":"12921:3:24"},"nativeSrc":"12921:18:24","nodeType":"YulFunctionCall","src":"12921:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"12908:12:24","nodeType":"YulIdentifier","src":"12908:12:24"},"nativeSrc":"12908:32:24","nodeType":"YulFunctionCall","src":"12908:32:24"},"variableNames":[{"name":"value_3","nativeSrc":"12897:7:24","nodeType":"YulIdentifier","src":"12897:7:24"}]},{"nativeSrc":"12949:17:24","nodeType":"YulAssignment","src":"12949:17:24","value":{"name":"value_3","nativeSrc":"12959:7:24","nodeType":"YulIdentifier","src":"12959:7:24"},"variableNames":[{"name":"value3","nativeSrc":"12949:6:24","nodeType":"YulIdentifier","src":"12949:6:24"}]},{"nativeSrc":"12975:48:24","nodeType":"YulVariableDeclaration","src":"12975:48:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13007:9:24","nodeType":"YulIdentifier","src":"13007:9:24"},{"kind":"number","nativeSrc":"13018:3:24","nodeType":"YulLiteral","src":"13018:3:24","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"13003:3:24","nodeType":"YulIdentifier","src":"13003:3:24"},"nativeSrc":"13003:19:24","nodeType":"YulFunctionCall","src":"13003:19:24"}],"functionName":{"name":"calldataload","nativeSrc":"12990:12:24","nodeType":"YulIdentifier","src":"12990:12:24"},"nativeSrc":"12990:33:24","nodeType":"YulFunctionCall","src":"12990:33:24"},"variables":[{"name":"value_4","nativeSrc":"12979:7:24","nodeType":"YulTypedName","src":"12979:7:24","type":""}]},{"expression":{"arguments":[{"name":"value_4","nativeSrc":"13054:7:24","nodeType":"YulIdentifier","src":"13054:7:24"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"13032:21:24","nodeType":"YulIdentifier","src":"13032:21:24"},"nativeSrc":"13032:30:24","nodeType":"YulFunctionCall","src":"13032:30:24"},"nativeSrc":"13032:30:24","nodeType":"YulExpressionStatement","src":"13032:30:24"},{"nativeSrc":"13071:17:24","nodeType":"YulAssignment","src":"13071:17:24","value":{"name":"value_4","nativeSrc":"13081:7:24","nodeType":"YulIdentifier","src":"13081:7:24"},"variableNames":[{"name":"value4","nativeSrc":"13071:6:24","nodeType":"YulIdentifier","src":"13071:6:24"}]}]},"name":"abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_bool","nativeSrc":"12371:723:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"12440:9:24","nodeType":"YulTypedName","src":"12440:9:24","type":""},{"name":"dataEnd","nativeSrc":"12451:7:24","nodeType":"YulTypedName","src":"12451:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"12463:6:24","nodeType":"YulTypedName","src":"12463:6:24","type":""},{"name":"value1","nativeSrc":"12471:6:24","nodeType":"YulTypedName","src":"12471:6:24","type":""},{"name":"value2","nativeSrc":"12479:6:24","nodeType":"YulTypedName","src":"12479:6:24","type":""},{"name":"value3","nativeSrc":"12487:6:24","nodeType":"YulTypedName","src":"12487:6:24","type":""},{"name":"value4","nativeSrc":"12495:6:24","nodeType":"YulTypedName","src":"12495:6:24","type":""}],"src":"12371:723:24"},{"body":{"nativeSrc":"13211:371:24","nodeType":"YulBlock","src":"13211:371:24","statements":[{"body":{"nativeSrc":"13257:16:24","nodeType":"YulBlock","src":"13257:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13266:1:24","nodeType":"YulLiteral","src":"13266:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"13269:1:24","nodeType":"YulLiteral","src":"13269:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13259:6:24","nodeType":"YulIdentifier","src":"13259:6:24"},"nativeSrc":"13259:12:24","nodeType":"YulFunctionCall","src":"13259:12:24"},"nativeSrc":"13259:12:24","nodeType":"YulExpressionStatement","src":"13259:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"13232:7:24","nodeType":"YulIdentifier","src":"13232:7:24"},{"name":"headStart","nativeSrc":"13241:9:24","nodeType":"YulIdentifier","src":"13241:9:24"}],"functionName":{"name":"sub","nativeSrc":"13228:3:24","nodeType":"YulIdentifier","src":"13228:3:24"},"nativeSrc":"13228:23:24","nodeType":"YulFunctionCall","src":"13228:23:24"},{"kind":"number","nativeSrc":"13253:2:24","nodeType":"YulLiteral","src":"13253:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"13224:3:24","nodeType":"YulIdentifier","src":"13224:3:24"},"nativeSrc":"13224:32:24","nodeType":"YulFunctionCall","src":"13224:32:24"},"nativeSrc":"13221:52:24","nodeType":"YulIf","src":"13221:52:24"},{"nativeSrc":"13282:36:24","nodeType":"YulVariableDeclaration","src":"13282:36:24","value":{"arguments":[{"name":"headStart","nativeSrc":"13308:9:24","nodeType":"YulIdentifier","src":"13308:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"13295:12:24","nodeType":"YulIdentifier","src":"13295:12:24"},"nativeSrc":"13295:23:24","nodeType":"YulFunctionCall","src":"13295:23:24"},"variables":[{"name":"value","nativeSrc":"13286:5:24","nodeType":"YulTypedName","src":"13286:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"13352:5:24","nodeType":"YulIdentifier","src":"13352:5:24"}],"functionName":{"name":"validator_revert_address","nativeSrc":"13327:24:24","nodeType":"YulIdentifier","src":"13327:24:24"},"nativeSrc":"13327:31:24","nodeType":"YulFunctionCall","src":"13327:31:24"},"nativeSrc":"13327:31:24","nodeType":"YulExpressionStatement","src":"13327:31:24"},{"nativeSrc":"13367:15:24","nodeType":"YulAssignment","src":"13367:15:24","value":{"name":"value","nativeSrc":"13377:5:24","nodeType":"YulIdentifier","src":"13377:5:24"},"variableNames":[{"name":"value0","nativeSrc":"13367:6:24","nodeType":"YulIdentifier","src":"13367:6:24"}]},{"nativeSrc":"13391:46:24","nodeType":"YulVariableDeclaration","src":"13391:46:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13422:9:24","nodeType":"YulIdentifier","src":"13422:9:24"},{"kind":"number","nativeSrc":"13433:2:24","nodeType":"YulLiteral","src":"13433:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13418:3:24","nodeType":"YulIdentifier","src":"13418:3:24"},"nativeSrc":"13418:18:24","nodeType":"YulFunctionCall","src":"13418:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"13405:12:24","nodeType":"YulIdentifier","src":"13405:12:24"},"nativeSrc":"13405:32:24","nodeType":"YulFunctionCall","src":"13405:32:24"},"variables":[{"name":"offset","nativeSrc":"13395:6:24","nodeType":"YulTypedName","src":"13395:6:24","type":""}]},{"body":{"nativeSrc":"13480:16:24","nodeType":"YulBlock","src":"13480:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"13489:1:24","nodeType":"YulLiteral","src":"13489:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"13492:1:24","nodeType":"YulLiteral","src":"13492:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"13482:6:24","nodeType":"YulIdentifier","src":"13482:6:24"},"nativeSrc":"13482:12:24","nodeType":"YulFunctionCall","src":"13482:12:24"},"nativeSrc":"13482:12:24","nodeType":"YulExpressionStatement","src":"13482:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"13452:6:24","nodeType":"YulIdentifier","src":"13452:6:24"},{"kind":"number","nativeSrc":"13460:18:24","nodeType":"YulLiteral","src":"13460:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"13449:2:24","nodeType":"YulIdentifier","src":"13449:2:24"},"nativeSrc":"13449:30:24","nodeType":"YulFunctionCall","src":"13449:30:24"},"nativeSrc":"13446:50:24","nodeType":"YulIf","src":"13446:50:24"},{"nativeSrc":"13505:71:24","nodeType":"YulAssignment","src":"13505:71:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"13548:9:24","nodeType":"YulIdentifier","src":"13548:9:24"},{"name":"offset","nativeSrc":"13559:6:24","nodeType":"YulIdentifier","src":"13559:6:24"}],"functionName":{"name":"add","nativeSrc":"13544:3:24","nodeType":"YulIdentifier","src":"13544:3:24"},"nativeSrc":"13544:22:24","nodeType":"YulFunctionCall","src":"13544:22:24"},{"name":"dataEnd","nativeSrc":"13568:7:24","nodeType":"YulIdentifier","src":"13568:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"13515:28:24","nodeType":"YulIdentifier","src":"13515:28:24"},"nativeSrc":"13515:61:24","nodeType":"YulFunctionCall","src":"13515:61:24"},"variableNames":[{"name":"value1","nativeSrc":"13505:6:24","nodeType":"YulIdentifier","src":"13505:6:24"}]}]},"name":"abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"13099:483:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13169:9:24","nodeType":"YulTypedName","src":"13169:9:24","type":""},{"name":"dataEnd","nativeSrc":"13180:7:24","nodeType":"YulTypedName","src":"13180:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"13192:6:24","nodeType":"YulTypedName","src":"13192:6:24","type":""},{"name":"value1","nativeSrc":"13200:6:24","nodeType":"YulTypedName","src":"13200:6:24","type":""}],"src":"13099:483:24"},{"body":{"nativeSrc":"13802:488:24","nodeType":"YulBlock","src":"13802:488:24","statements":[{"nativeSrc":"13812:32:24","nodeType":"YulVariableDeclaration","src":"13812:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"13830:9:24","nodeType":"YulIdentifier","src":"13830:9:24"},{"kind":"number","nativeSrc":"13841:2:24","nodeType":"YulLiteral","src":"13841:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"13826:3:24","nodeType":"YulIdentifier","src":"13826:3:24"},"nativeSrc":"13826:18:24","nodeType":"YulFunctionCall","src":"13826:18:24"},"variables":[{"name":"tail_1","nativeSrc":"13816:6:24","nodeType":"YulTypedName","src":"13816:6:24","type":""}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"13860:9:24","nodeType":"YulIdentifier","src":"13860:9:24"},{"kind":"number","nativeSrc":"13871:2:24","nodeType":"YulLiteral","src":"13871:2:24","type":"","value":"32"}],"functionName":{"name":"mstore","nativeSrc":"13853:6:24","nodeType":"YulIdentifier","src":"13853:6:24"},"nativeSrc":"13853:21:24","nodeType":"YulFunctionCall","src":"13853:21:24"},"nativeSrc":"13853:21:24","nodeType":"YulExpressionStatement","src":"13853:21:24"},{"nativeSrc":"13883:17:24","nodeType":"YulVariableDeclaration","src":"13883:17:24","value":{"name":"tail_1","nativeSrc":"13894:6:24","nodeType":"YulIdentifier","src":"13894:6:24"},"variables":[{"name":"pos","nativeSrc":"13887:3:24","nodeType":"YulTypedName","src":"13887:3:24","type":""}]},{"nativeSrc":"13909:27:24","nodeType":"YulVariableDeclaration","src":"13909:27:24","value":{"arguments":[{"name":"value0","nativeSrc":"13929:6:24","nodeType":"YulIdentifier","src":"13929:6:24"}],"functionName":{"name":"mload","nativeSrc":"13923:5:24","nodeType":"YulIdentifier","src":"13923:5:24"},"nativeSrc":"13923:13:24","nodeType":"YulFunctionCall","src":"13923:13:24"},"variables":[{"name":"length","nativeSrc":"13913:6:24","nodeType":"YulTypedName","src":"13913:6:24","type":""}]},{"expression":{"arguments":[{"name":"tail_1","nativeSrc":"13952:6:24","nodeType":"YulIdentifier","src":"13952:6:24"},{"name":"length","nativeSrc":"13960:6:24","nodeType":"YulIdentifier","src":"13960:6:24"}],"functionName":{"name":"mstore","nativeSrc":"13945:6:24","nodeType":"YulIdentifier","src":"13945:6:24"},"nativeSrc":"13945:22:24","nodeType":"YulFunctionCall","src":"13945:22:24"},"nativeSrc":"13945:22:24","nodeType":"YulExpressionStatement","src":"13945:22:24"},{"nativeSrc":"13976:25:24","nodeType":"YulAssignment","src":"13976:25:24","value":{"arguments":[{"name":"headStart","nativeSrc":"13987:9:24","nodeType":"YulIdentifier","src":"13987:9:24"},{"kind":"number","nativeSrc":"13998:2:24","nodeType":"YulLiteral","src":"13998:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"13983:3:24","nodeType":"YulIdentifier","src":"13983:3:24"},"nativeSrc":"13983:18:24","nodeType":"YulFunctionCall","src":"13983:18:24"},"variableNames":[{"name":"pos","nativeSrc":"13976:3:24","nodeType":"YulIdentifier","src":"13976:3:24"}]},{"nativeSrc":"14010:29:24","nodeType":"YulVariableDeclaration","src":"14010:29:24","value":{"arguments":[{"name":"value0","nativeSrc":"14028:6:24","nodeType":"YulIdentifier","src":"14028:6:24"},{"kind":"number","nativeSrc":"14036:2:24","nodeType":"YulLiteral","src":"14036:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14024:3:24","nodeType":"YulIdentifier","src":"14024:3:24"},"nativeSrc":"14024:15:24","nodeType":"YulFunctionCall","src":"14024:15:24"},"variables":[{"name":"srcPtr","nativeSrc":"14014:6:24","nodeType":"YulTypedName","src":"14014:6:24","type":""}]},{"nativeSrc":"14048:10:24","nodeType":"YulVariableDeclaration","src":"14048:10:24","value":{"kind":"number","nativeSrc":"14057:1:24","nodeType":"YulLiteral","src":"14057:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"14052:1:24","nodeType":"YulTypedName","src":"14052:1:24","type":""}]},{"body":{"nativeSrc":"14116:148:24","nodeType":"YulBlock","src":"14116:148:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"srcPtr","nativeSrc":"14169:6:24","nodeType":"YulIdentifier","src":"14169:6:24"}],"functionName":{"name":"mload","nativeSrc":"14163:5:24","nodeType":"YulIdentifier","src":"14163:5:24"},"nativeSrc":"14163:13:24","nodeType":"YulFunctionCall","src":"14163:13:24"},{"name":"pos","nativeSrc":"14178:3:24","nodeType":"YulIdentifier","src":"14178:3:24"}],"functionName":{"name":"abi_encode_struct_ViewPermission","nativeSrc":"14130:32:24","nodeType":"YulIdentifier","src":"14130:32:24"},"nativeSrc":"14130:52:24","nodeType":"YulFunctionCall","src":"14130:52:24"},"nativeSrc":"14130:52:24","nodeType":"YulExpressionStatement","src":"14130:52:24"},{"nativeSrc":"14195:21:24","nodeType":"YulAssignment","src":"14195:21:24","value":{"arguments":[{"name":"pos","nativeSrc":"14206:3:24","nodeType":"YulIdentifier","src":"14206:3:24"},{"kind":"number","nativeSrc":"14211:4:24","nodeType":"YulLiteral","src":"14211:4:24","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"14202:3:24","nodeType":"YulIdentifier","src":"14202:3:24"},"nativeSrc":"14202:14:24","nodeType":"YulFunctionCall","src":"14202:14:24"},"variableNames":[{"name":"pos","nativeSrc":"14195:3:24","nodeType":"YulIdentifier","src":"14195:3:24"}]},{"nativeSrc":"14229:25:24","nodeType":"YulAssignment","src":"14229:25:24","value":{"arguments":[{"name":"srcPtr","nativeSrc":"14243:6:24","nodeType":"YulIdentifier","src":"14243:6:24"},{"kind":"number","nativeSrc":"14251:2:24","nodeType":"YulLiteral","src":"14251:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14239:3:24","nodeType":"YulIdentifier","src":"14239:3:24"},"nativeSrc":"14239:15:24","nodeType":"YulFunctionCall","src":"14239:15:24"},"variableNames":[{"name":"srcPtr","nativeSrc":"14229:6:24","nodeType":"YulIdentifier","src":"14229:6:24"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"14078:1:24","nodeType":"YulIdentifier","src":"14078:1:24"},{"name":"length","nativeSrc":"14081:6:24","nodeType":"YulIdentifier","src":"14081:6:24"}],"functionName":{"name":"lt","nativeSrc":"14075:2:24","nodeType":"YulIdentifier","src":"14075:2:24"},"nativeSrc":"14075:13:24","nodeType":"YulFunctionCall","src":"14075:13:24"},"nativeSrc":"14067:197:24","nodeType":"YulForLoop","post":{"nativeSrc":"14089:18:24","nodeType":"YulBlock","src":"14089:18:24","statements":[{"nativeSrc":"14091:14:24","nodeType":"YulAssignment","src":"14091:14:24","value":{"arguments":[{"name":"i","nativeSrc":"14100:1:24","nodeType":"YulIdentifier","src":"14100:1:24"},{"kind":"number","nativeSrc":"14103:1:24","nodeType":"YulLiteral","src":"14103:1:24","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"14096:3:24","nodeType":"YulIdentifier","src":"14096:3:24"},"nativeSrc":"14096:9:24","nodeType":"YulFunctionCall","src":"14096:9:24"},"variableNames":[{"name":"i","nativeSrc":"14091:1:24","nodeType":"YulIdentifier","src":"14091:1:24"}]}]},"pre":{"nativeSrc":"14071:3:24","nodeType":"YulBlock","src":"14071:3:24","statements":[]},"src":"14067:197:24"},{"nativeSrc":"14273:11:24","nodeType":"YulAssignment","src":"14273:11:24","value":{"name":"pos","nativeSrc":"14281:3:24","nodeType":"YulIdentifier","src":"14281:3:24"},"variableNames":[{"name":"tail","nativeSrc":"14273:4:24","nodeType":"YulIdentifier","src":"14273:4:24"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nativeSrc":"13587:703:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"13771:9:24","nodeType":"YulTypedName","src":"13771:9:24","type":""},{"name":"value0","nativeSrc":"13782:6:24","nodeType":"YulTypedName","src":"13782:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"13793:4:24","nodeType":"YulTypedName","src":"13793:4:24","type":""}],"src":"13587:703:24"},{"body":{"nativeSrc":"14432:453:24","nodeType":"YulBlock","src":"14432:453:24","statements":[{"body":{"nativeSrc":"14478:16:24","nodeType":"YulBlock","src":"14478:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14487:1:24","nodeType":"YulLiteral","src":"14487:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"14490:1:24","nodeType":"YulLiteral","src":"14490:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14480:6:24","nodeType":"YulIdentifier","src":"14480:6:24"},"nativeSrc":"14480:12:24","nodeType":"YulFunctionCall","src":"14480:12:24"},"nativeSrc":"14480:12:24","nodeType":"YulExpressionStatement","src":"14480:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"14453:7:24","nodeType":"YulIdentifier","src":"14453:7:24"},{"name":"headStart","nativeSrc":"14462:9:24","nodeType":"YulIdentifier","src":"14462:9:24"}],"functionName":{"name":"sub","nativeSrc":"14449:3:24","nodeType":"YulIdentifier","src":"14449:3:24"},"nativeSrc":"14449:23:24","nodeType":"YulFunctionCall","src":"14449:23:24"},{"kind":"number","nativeSrc":"14474:2:24","nodeType":"YulLiteral","src":"14474:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"14445:3:24","nodeType":"YulIdentifier","src":"14445:3:24"},"nativeSrc":"14445:32:24","nodeType":"YulFunctionCall","src":"14445:32:24"},"nativeSrc":"14442:52:24","nodeType":"YulIf","src":"14442:52:24"},{"nativeSrc":"14503:37:24","nodeType":"YulVariableDeclaration","src":"14503:37:24","value":{"arguments":[{"name":"headStart","nativeSrc":"14530:9:24","nodeType":"YulIdentifier","src":"14530:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"14517:12:24","nodeType":"YulIdentifier","src":"14517:12:24"},"nativeSrc":"14517:23:24","nodeType":"YulFunctionCall","src":"14517:23:24"},"variables":[{"name":"offset","nativeSrc":"14507:6:24","nodeType":"YulTypedName","src":"14507:6:24","type":""}]},{"body":{"nativeSrc":"14583:16:24","nodeType":"YulBlock","src":"14583:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14592:1:24","nodeType":"YulLiteral","src":"14592:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"14595:1:24","nodeType":"YulLiteral","src":"14595:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14585:6:24","nodeType":"YulIdentifier","src":"14585:6:24"},"nativeSrc":"14585:12:24","nodeType":"YulFunctionCall","src":"14585:12:24"},"nativeSrc":"14585:12:24","nodeType":"YulExpressionStatement","src":"14585:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"14555:6:24","nodeType":"YulIdentifier","src":"14555:6:24"},{"kind":"number","nativeSrc":"14563:18:24","nodeType":"YulLiteral","src":"14563:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14552:2:24","nodeType":"YulIdentifier","src":"14552:2:24"},"nativeSrc":"14552:30:24","nodeType":"YulFunctionCall","src":"14552:30:24"},"nativeSrc":"14549:50:24","nodeType":"YulIf","src":"14549:50:24"},{"nativeSrc":"14608:71:24","nodeType":"YulAssignment","src":"14608:71:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14651:9:24","nodeType":"YulIdentifier","src":"14651:9:24"},{"name":"offset","nativeSrc":"14662:6:24","nodeType":"YulIdentifier","src":"14662:6:24"}],"functionName":{"name":"add","nativeSrc":"14647:3:24","nodeType":"YulIdentifier","src":"14647:3:24"},"nativeSrc":"14647:22:24","nodeType":"YulFunctionCall","src":"14647:22:24"},{"name":"dataEnd","nativeSrc":"14671:7:24","nodeType":"YulIdentifier","src":"14671:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"14618:28:24","nodeType":"YulIdentifier","src":"14618:28:24"},"nativeSrc":"14618:61:24","nodeType":"YulFunctionCall","src":"14618:61:24"},"variableNames":[{"name":"value0","nativeSrc":"14608:6:24","nodeType":"YulIdentifier","src":"14608:6:24"}]},{"nativeSrc":"14688:48:24","nodeType":"YulVariableDeclaration","src":"14688:48:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14721:9:24","nodeType":"YulIdentifier","src":"14721:9:24"},{"kind":"number","nativeSrc":"14732:2:24","nodeType":"YulLiteral","src":"14732:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"14717:3:24","nodeType":"YulIdentifier","src":"14717:3:24"},"nativeSrc":"14717:18:24","nodeType":"YulFunctionCall","src":"14717:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"14704:12:24","nodeType":"YulIdentifier","src":"14704:12:24"},"nativeSrc":"14704:32:24","nodeType":"YulFunctionCall","src":"14704:32:24"},"variables":[{"name":"offset_1","nativeSrc":"14692:8:24","nodeType":"YulTypedName","src":"14692:8:24","type":""}]},{"body":{"nativeSrc":"14781:16:24","nodeType":"YulBlock","src":"14781:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14790:1:24","nodeType":"YulLiteral","src":"14790:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"14793:1:24","nodeType":"YulLiteral","src":"14793:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"14783:6:24","nodeType":"YulIdentifier","src":"14783:6:24"},"nativeSrc":"14783:12:24","nodeType":"YulFunctionCall","src":"14783:12:24"},"nativeSrc":"14783:12:24","nodeType":"YulExpressionStatement","src":"14783:12:24"}]},"condition":{"arguments":[{"name":"offset_1","nativeSrc":"14751:8:24","nodeType":"YulIdentifier","src":"14751:8:24"},{"kind":"number","nativeSrc":"14761:18:24","nodeType":"YulLiteral","src":"14761:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"14748:2:24","nodeType":"YulIdentifier","src":"14748:2:24"},"nativeSrc":"14748:32:24","nodeType":"YulFunctionCall","src":"14748:32:24"},"nativeSrc":"14745:52:24","nodeType":"YulIf","src":"14745:52:24"},{"nativeSrc":"14806:73:24","nodeType":"YulAssignment","src":"14806:73:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"14849:9:24","nodeType":"YulIdentifier","src":"14849:9:24"},{"name":"offset_1","nativeSrc":"14860:8:24","nodeType":"YulIdentifier","src":"14860:8:24"}],"functionName":{"name":"add","nativeSrc":"14845:3:24","nodeType":"YulIdentifier","src":"14845:3:24"},"nativeSrc":"14845:24:24","nodeType":"YulFunctionCall","src":"14845:24:24"},{"name":"dataEnd","nativeSrc":"14871:7:24","nodeType":"YulIdentifier","src":"14871:7:24"}],"functionName":{"name":"abi_decode_array_uint256_dyn","nativeSrc":"14816:28:24","nodeType":"YulIdentifier","src":"14816:28:24"},"nativeSrc":"14816:63:24","nodeType":"YulFunctionCall","src":"14816:63:24"},"variableNames":[{"name":"value1","nativeSrc":"14806:6:24","nodeType":"YulIdentifier","src":"14806:6:24"}]}]},"name":"abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr","nativeSrc":"14295:590:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"14390:9:24","nodeType":"YulTypedName","src":"14390:9:24","type":""},{"name":"dataEnd","nativeSrc":"14401:7:24","nodeType":"YulTypedName","src":"14401:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"14413:6:24","nodeType":"YulTypedName","src":"14413:6:24","type":""},{"name":"value1","nativeSrc":"14421:6:24","nodeType":"YulTypedName","src":"14421:6:24","type":""}],"src":"14295:590:24"},{"body":{"nativeSrc":"14922:95:24","nodeType":"YulBlock","src":"14922:95:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"14939:1:24","nodeType":"YulLiteral","src":"14939:1:24","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"14946:3:24","nodeType":"YulLiteral","src":"14946:3:24","type":"","value":"224"},{"kind":"number","nativeSrc":"14951:10:24","nodeType":"YulLiteral","src":"14951:10:24","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"14942:3:24","nodeType":"YulIdentifier","src":"14942:3:24"},"nativeSrc":"14942:20:24","nodeType":"YulFunctionCall","src":"14942:20:24"}],"functionName":{"name":"mstore","nativeSrc":"14932:6:24","nodeType":"YulIdentifier","src":"14932:6:24"},"nativeSrc":"14932:31:24","nodeType":"YulFunctionCall","src":"14932:31:24"},"nativeSrc":"14932:31:24","nodeType":"YulExpressionStatement","src":"14932:31:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"14979:1:24","nodeType":"YulLiteral","src":"14979:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"14982:4:24","nodeType":"YulLiteral","src":"14982:4:24","type":"","value":"0x11"}],"functionName":{"name":"mstore","nativeSrc":"14972:6:24","nodeType":"YulIdentifier","src":"14972:6:24"},"nativeSrc":"14972:15:24","nodeType":"YulFunctionCall","src":"14972:15:24"},"nativeSrc":"14972:15:24","nodeType":"YulExpressionStatement","src":"14972:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15003:1:24","nodeType":"YulLiteral","src":"15003:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"15006:4:24","nodeType":"YulLiteral","src":"15006:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"14996:6:24","nodeType":"YulIdentifier","src":"14996:6:24"},"nativeSrc":"14996:15:24","nodeType":"YulFunctionCall","src":"14996:15:24"},"nativeSrc":"14996:15:24","nodeType":"YulExpressionStatement","src":"14996:15:24"}]},"name":"panic_error_0x11","nativeSrc":"14890:127:24","nodeType":"YulFunctionDefinition","src":"14890:127:24"},{"body":{"nativeSrc":"15070:77:24","nodeType":"YulBlock","src":"15070:77:24","statements":[{"nativeSrc":"15080:16:24","nodeType":"YulAssignment","src":"15080:16:24","value":{"arguments":[{"name":"x","nativeSrc":"15091:1:24","nodeType":"YulIdentifier","src":"15091:1:24"},{"name":"y","nativeSrc":"15094:1:24","nodeType":"YulIdentifier","src":"15094:1:24"}],"functionName":{"name":"add","nativeSrc":"15087:3:24","nodeType":"YulIdentifier","src":"15087:3:24"},"nativeSrc":"15087:9:24","nodeType":"YulFunctionCall","src":"15087:9:24"},"variableNames":[{"name":"sum","nativeSrc":"15080:3:24","nodeType":"YulIdentifier","src":"15080:3:24"}]},{"body":{"nativeSrc":"15119:22:24","nodeType":"YulBlock","src":"15119:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15121:16:24","nodeType":"YulIdentifier","src":"15121:16:24"},"nativeSrc":"15121:18:24","nodeType":"YulFunctionCall","src":"15121:18:24"},"nativeSrc":"15121:18:24","nodeType":"YulExpressionStatement","src":"15121:18:24"}]},"condition":{"arguments":[{"name":"x","nativeSrc":"15111:1:24","nodeType":"YulIdentifier","src":"15111:1:24"},{"name":"sum","nativeSrc":"15114:3:24","nodeType":"YulIdentifier","src":"15114:3:24"}],"functionName":{"name":"gt","nativeSrc":"15108:2:24","nodeType":"YulIdentifier","src":"15108:2:24"},"nativeSrc":"15108:10:24","nodeType":"YulFunctionCall","src":"15108:10:24"},"nativeSrc":"15105:36:24","nodeType":"YulIf","src":"15105:36:24"}]},"name":"checked_add_t_uint256","nativeSrc":"15022:125:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nativeSrc":"15053:1:24","nodeType":"YulTypedName","src":"15053:1:24","type":""},{"name":"y","nativeSrc":"15056:1:24","nodeType":"YulTypedName","src":"15056:1:24","type":""}],"returnVariables":[{"name":"sum","nativeSrc":"15062:3:24","nodeType":"YulTypedName","src":"15062:3:24","type":""}],"src":"15022:125:24"},{"body":{"nativeSrc":"15199:89:24","nodeType":"YulBlock","src":"15199:89:24","statements":[{"body":{"nativeSrc":"15226:22:24","nodeType":"YulBlock","src":"15226:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nativeSrc":"15228:16:24","nodeType":"YulIdentifier","src":"15228:16:24"},"nativeSrc":"15228:18:24","nodeType":"YulFunctionCall","src":"15228:18:24"},"nativeSrc":"15228:18:24","nodeType":"YulExpressionStatement","src":"15228:18:24"}]},"condition":{"arguments":[{"name":"value","nativeSrc":"15219:5:24","nodeType":"YulIdentifier","src":"15219:5:24"}],"functionName":{"name":"iszero","nativeSrc":"15212:6:24","nodeType":"YulIdentifier","src":"15212:6:24"},"nativeSrc":"15212:13:24","nodeType":"YulFunctionCall","src":"15212:13:24"},"nativeSrc":"15209:39:24","nodeType":"YulIf","src":"15209:39:24"},{"nativeSrc":"15257:25:24","nodeType":"YulAssignment","src":"15257:25:24","value":{"arguments":[{"name":"value","nativeSrc":"15268:5:24","nodeType":"YulIdentifier","src":"15268:5:24"},{"arguments":[{"kind":"number","nativeSrc":"15279:1:24","nodeType":"YulLiteral","src":"15279:1:24","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"15275:3:24","nodeType":"YulIdentifier","src":"15275:3:24"},"nativeSrc":"15275:6:24","nodeType":"YulFunctionCall","src":"15275:6:24"}],"functionName":{"name":"add","nativeSrc":"15264:3:24","nodeType":"YulIdentifier","src":"15264:3:24"},"nativeSrc":"15264:18:24","nodeType":"YulFunctionCall","src":"15264:18:24"},"variableNames":[{"name":"ret","nativeSrc":"15257:3:24","nodeType":"YulIdentifier","src":"15257:3:24"}]}]},"name":"decrement_t_uint256","nativeSrc":"15152:136:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"15181:5:24","nodeType":"YulTypedName","src":"15181:5:24","type":""}],"returnVariables":[{"name":"ret","nativeSrc":"15191:3:24","nodeType":"YulTypedName","src":"15191:3:24","type":""}],"src":"15152:136:24"},{"body":{"nativeSrc":"15325:95:24","nodeType":"YulBlock","src":"15325:95:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"15342:1:24","nodeType":"YulLiteral","src":"15342:1:24","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"15349:3:24","nodeType":"YulLiteral","src":"15349:3:24","type":"","value":"224"},{"kind":"number","nativeSrc":"15354:10:24","nodeType":"YulLiteral","src":"15354:10:24","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"15345:3:24","nodeType":"YulIdentifier","src":"15345:3:24"},"nativeSrc":"15345:20:24","nodeType":"YulFunctionCall","src":"15345:20:24"}],"functionName":{"name":"mstore","nativeSrc":"15335:6:24","nodeType":"YulIdentifier","src":"15335:6:24"},"nativeSrc":"15335:31:24","nodeType":"YulFunctionCall","src":"15335:31:24"},"nativeSrc":"15335:31:24","nodeType":"YulExpressionStatement","src":"15335:31:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15382:1:24","nodeType":"YulLiteral","src":"15382:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"15385:4:24","nodeType":"YulLiteral","src":"15385:4:24","type":"","value":"0x32"}],"functionName":{"name":"mstore","nativeSrc":"15375:6:24","nodeType":"YulIdentifier","src":"15375:6:24"},"nativeSrc":"15375:15:24","nodeType":"YulFunctionCall","src":"15375:15:24"},"nativeSrc":"15375:15:24","nodeType":"YulExpressionStatement","src":"15375:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"15406:1:24","nodeType":"YulLiteral","src":"15406:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"15409:4:24","nodeType":"YulLiteral","src":"15409:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"15399:6:24","nodeType":"YulIdentifier","src":"15399:6:24"},"nativeSrc":"15399:15:24","nodeType":"YulFunctionCall","src":"15399:15:24"},"nativeSrc":"15399:15:24","nodeType":"YulExpressionStatement","src":"15399:15:24"}]},"name":"panic_error_0x32","nativeSrc":"15293:127:24","nodeType":"YulFunctionDefinition","src":"15293:127:24"},{"body":{"nativeSrc":"15486:359:24","nodeType":"YulBlock","src":"15486:359:24","statements":[{"nativeSrc":"15496:26:24","nodeType":"YulVariableDeclaration","src":"15496:26:24","value":{"arguments":[{"name":"value","nativeSrc":"15516:5:24","nodeType":"YulIdentifier","src":"15516:5:24"}],"functionName":{"name":"mload","nativeSrc":"15510:5:24","nodeType":"YulIdentifier","src":"15510:5:24"},"nativeSrc":"15510:12:24","nodeType":"YulFunctionCall","src":"15510:12:24"},"variables":[{"name":"length","nativeSrc":"15500:6:24","nodeType":"YulTypedName","src":"15500:6:24","type":""}]},{"expression":{"arguments":[{"name":"pos","nativeSrc":"15538:3:24","nodeType":"YulIdentifier","src":"15538:3:24"},{"name":"length","nativeSrc":"15543:6:24","nodeType":"YulIdentifier","src":"15543:6:24"}],"functionName":{"name":"mstore","nativeSrc":"15531:6:24","nodeType":"YulIdentifier","src":"15531:6:24"},"nativeSrc":"15531:19:24","nodeType":"YulFunctionCall","src":"15531:19:24"},"nativeSrc":"15531:19:24","nodeType":"YulExpressionStatement","src":"15531:19:24"},{"nativeSrc":"15559:21:24","nodeType":"YulAssignment","src":"15559:21:24","value":{"arguments":[{"name":"pos","nativeSrc":"15570:3:24","nodeType":"YulIdentifier","src":"15570:3:24"},{"kind":"number","nativeSrc":"15575:4:24","nodeType":"YulLiteral","src":"15575:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15566:3:24","nodeType":"YulIdentifier","src":"15566:3:24"},"nativeSrc":"15566:14:24","nodeType":"YulFunctionCall","src":"15566:14:24"},"variableNames":[{"name":"pos","nativeSrc":"15559:3:24","nodeType":"YulIdentifier","src":"15559:3:24"}]},{"nativeSrc":"15589:30:24","nodeType":"YulVariableDeclaration","src":"15589:30:24","value":{"arguments":[{"name":"value","nativeSrc":"15607:5:24","nodeType":"YulIdentifier","src":"15607:5:24"},{"kind":"number","nativeSrc":"15614:4:24","nodeType":"YulLiteral","src":"15614:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15603:3:24","nodeType":"YulIdentifier","src":"15603:3:24"},"nativeSrc":"15603:16:24","nodeType":"YulFunctionCall","src":"15603:16:24"},"variables":[{"name":"srcPtr","nativeSrc":"15593:6:24","nodeType":"YulTypedName","src":"15593:6:24","type":""}]},{"nativeSrc":"15628:10:24","nodeType":"YulVariableDeclaration","src":"15628:10:24","value":{"kind":"number","nativeSrc":"15637:1:24","nodeType":"YulLiteral","src":"15637:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"15632:1:24","nodeType":"YulTypedName","src":"15632:1:24","type":""}]},{"body":{"nativeSrc":"15696:124:24","nodeType":"YulBlock","src":"15696:124:24","statements":[{"expression":{"arguments":[{"name":"pos","nativeSrc":"15717:3:24","nodeType":"YulIdentifier","src":"15717:3:24"},{"arguments":[{"name":"srcPtr","nativeSrc":"15728:6:24","nodeType":"YulIdentifier","src":"15728:6:24"}],"functionName":{"name":"mload","nativeSrc":"15722:5:24","nodeType":"YulIdentifier","src":"15722:5:24"},"nativeSrc":"15722:13:24","nodeType":"YulFunctionCall","src":"15722:13:24"}],"functionName":{"name":"mstore","nativeSrc":"15710:6:24","nodeType":"YulIdentifier","src":"15710:6:24"},"nativeSrc":"15710:26:24","nodeType":"YulFunctionCall","src":"15710:26:24"},"nativeSrc":"15710:26:24","nodeType":"YulExpressionStatement","src":"15710:26:24"},{"nativeSrc":"15749:21:24","nodeType":"YulAssignment","src":"15749:21:24","value":{"arguments":[{"name":"pos","nativeSrc":"15760:3:24","nodeType":"YulIdentifier","src":"15760:3:24"},{"kind":"number","nativeSrc":"15765:4:24","nodeType":"YulLiteral","src":"15765:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15756:3:24","nodeType":"YulIdentifier","src":"15756:3:24"},"nativeSrc":"15756:14:24","nodeType":"YulFunctionCall","src":"15756:14:24"},"variableNames":[{"name":"pos","nativeSrc":"15749:3:24","nodeType":"YulIdentifier","src":"15749:3:24"}]},{"nativeSrc":"15783:27:24","nodeType":"YulAssignment","src":"15783:27:24","value":{"arguments":[{"name":"srcPtr","nativeSrc":"15797:6:24","nodeType":"YulIdentifier","src":"15797:6:24"},{"kind":"number","nativeSrc":"15805:4:24","nodeType":"YulLiteral","src":"15805:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"15793:3:24","nodeType":"YulIdentifier","src":"15793:3:24"},"nativeSrc":"15793:17:24","nodeType":"YulFunctionCall","src":"15793:17:24"},"variableNames":[{"name":"srcPtr","nativeSrc":"15783:6:24","nodeType":"YulIdentifier","src":"15783:6:24"}]}]},"condition":{"arguments":[{"name":"i","nativeSrc":"15658:1:24","nodeType":"YulIdentifier","src":"15658:1:24"},{"name":"length","nativeSrc":"15661:6:24","nodeType":"YulIdentifier","src":"15661:6:24"}],"functionName":{"name":"lt","nativeSrc":"15655:2:24","nodeType":"YulIdentifier","src":"15655:2:24"},"nativeSrc":"15655:13:24","nodeType":"YulFunctionCall","src":"15655:13:24"},"nativeSrc":"15647:173:24","nodeType":"YulForLoop","post":{"nativeSrc":"15669:18:24","nodeType":"YulBlock","src":"15669:18:24","statements":[{"nativeSrc":"15671:14:24","nodeType":"YulAssignment","src":"15671:14:24","value":{"arguments":[{"name":"i","nativeSrc":"15680:1:24","nodeType":"YulIdentifier","src":"15680:1:24"},{"kind":"number","nativeSrc":"15683:1:24","nodeType":"YulLiteral","src":"15683:1:24","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"15676:3:24","nodeType":"YulIdentifier","src":"15676:3:24"},"nativeSrc":"15676:9:24","nodeType":"YulFunctionCall","src":"15676:9:24"},"variableNames":[{"name":"i","nativeSrc":"15671:1:24","nodeType":"YulIdentifier","src":"15671:1:24"}]}]},"pre":{"nativeSrc":"15651:3:24","nodeType":"YulBlock","src":"15651:3:24","statements":[]},"src":"15647:173:24"},{"nativeSrc":"15829:10:24","nodeType":"YulAssignment","src":"15829:10:24","value":{"name":"pos","nativeSrc":"15836:3:24","nodeType":"YulIdentifier","src":"15836:3:24"},"variableNames":[{"name":"end","nativeSrc":"15829:3:24","nodeType":"YulIdentifier","src":"15829:3:24"}]}]},"name":"abi_encode_array_uint256_dyn","nativeSrc":"15425:420:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nativeSrc":"15463:5:24","nodeType":"YulTypedName","src":"15463:5:24","type":""},{"name":"pos","nativeSrc":"15470:3:24","nodeType":"YulTypedName","src":"15470:3:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"15478:3:24","nodeType":"YulTypedName","src":"15478:3:24","type":""}],"src":"15425:420:24"},{"body":{"nativeSrc":"16029:153:24","nodeType":"YulBlock","src":"16029:153:24","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16046:9:24","nodeType":"YulIdentifier","src":"16046:9:24"},{"kind":"number","nativeSrc":"16057:2:24","nodeType":"YulLiteral","src":"16057:2:24","type":"","value":"64"}],"functionName":{"name":"mstore","nativeSrc":"16039:6:24","nodeType":"YulIdentifier","src":"16039:6:24"},"nativeSrc":"16039:21:24","nodeType":"YulFunctionCall","src":"16039:21:24"},"nativeSrc":"16039:21:24","nodeType":"YulExpressionStatement","src":"16039:21:24"},{"nativeSrc":"16069:64:24","nodeType":"YulAssignment","src":"16069:64:24","value":{"arguments":[{"name":"value0","nativeSrc":"16106:6:24","nodeType":"YulIdentifier","src":"16106:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"16118:9:24","nodeType":"YulIdentifier","src":"16118:9:24"},{"kind":"number","nativeSrc":"16129:2:24","nodeType":"YulLiteral","src":"16129:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16114:3:24","nodeType":"YulIdentifier","src":"16114:3:24"},"nativeSrc":"16114:18:24","nodeType":"YulFunctionCall","src":"16114:18:24"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nativeSrc":"16077:28:24","nodeType":"YulIdentifier","src":"16077:28:24"},"nativeSrc":"16077:56:24","nodeType":"YulFunctionCall","src":"16077:56:24"},"variableNames":[{"name":"tail","nativeSrc":"16069:4:24","nodeType":"YulIdentifier","src":"16069:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16153:9:24","nodeType":"YulIdentifier","src":"16153:9:24"},{"kind":"number","nativeSrc":"16164:2:24","nodeType":"YulLiteral","src":"16164:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16149:3:24","nodeType":"YulIdentifier","src":"16149:3:24"},"nativeSrc":"16149:18:24","nodeType":"YulFunctionCall","src":"16149:18:24"},{"name":"value1","nativeSrc":"16169:6:24","nodeType":"YulIdentifier","src":"16169:6:24"}],"functionName":{"name":"mstore","nativeSrc":"16142:6:24","nodeType":"YulIdentifier","src":"16142:6:24"},"nativeSrc":"16142:34:24","nodeType":"YulFunctionCall","src":"16142:34:24"},"nativeSrc":"16142:34:24","nodeType":"YulExpressionStatement","src":"16142:34:24"}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_uint256__to_t_array$_t_uint256_$dyn_memory_ptr_t_uint256__fromStack_reversed","nativeSrc":"15850:332:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"15990:9:24","nodeType":"YulTypedName","src":"15990:9:24","type":""},{"name":"value1","nativeSrc":"16001:6:24","nodeType":"YulTypedName","src":"16001:6:24","type":""},{"name":"value0","nativeSrc":"16009:6:24","nodeType":"YulTypedName","src":"16009:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16020:4:24","nodeType":"YulTypedName","src":"16020:4:24","type":""}],"src":"15850:332:24"},{"body":{"nativeSrc":"16295:101:24","nodeType":"YulBlock","src":"16295:101:24","statements":[{"nativeSrc":"16305:26:24","nodeType":"YulAssignment","src":"16305:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"16317:9:24","nodeType":"YulIdentifier","src":"16317:9:24"},{"kind":"number","nativeSrc":"16328:2:24","nodeType":"YulLiteral","src":"16328:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16313:3:24","nodeType":"YulIdentifier","src":"16313:3:24"},"nativeSrc":"16313:18:24","nodeType":"YulFunctionCall","src":"16313:18:24"},"variableNames":[{"name":"tail","nativeSrc":"16305:4:24","nodeType":"YulIdentifier","src":"16305:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16347:9:24","nodeType":"YulIdentifier","src":"16347:9:24"},{"arguments":[{"name":"value0","nativeSrc":"16362:6:24","nodeType":"YulIdentifier","src":"16362:6:24"},{"kind":"number","nativeSrc":"16370:18:24","nodeType":"YulLiteral","src":"16370:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"and","nativeSrc":"16358:3:24","nodeType":"YulIdentifier","src":"16358:3:24"},"nativeSrc":"16358:31:24","nodeType":"YulFunctionCall","src":"16358:31:24"}],"functionName":{"name":"mstore","nativeSrc":"16340:6:24","nodeType":"YulIdentifier","src":"16340:6:24"},"nativeSrc":"16340:50:24","nodeType":"YulFunctionCall","src":"16340:50:24"},"nativeSrc":"16340:50:24","nodeType":"YulExpressionStatement","src":"16340:50:24"}]},"name":"abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed","nativeSrc":"16187:209:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16264:9:24","nodeType":"YulTypedName","src":"16264:9:24","type":""},{"name":"value0","nativeSrc":"16275:6:24","nodeType":"YulTypedName","src":"16275:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16286:4:24","nodeType":"YulTypedName","src":"16286:4:24","type":""}],"src":"16187:209:24"},{"body":{"nativeSrc":"16482:170:24","nodeType":"YulBlock","src":"16482:170:24","statements":[{"body":{"nativeSrc":"16528:16:24","nodeType":"YulBlock","src":"16528:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"16537:1:24","nodeType":"YulLiteral","src":"16537:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"16540:1:24","nodeType":"YulLiteral","src":"16540:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"16530:6:24","nodeType":"YulIdentifier","src":"16530:6:24"},"nativeSrc":"16530:12:24","nodeType":"YulFunctionCall","src":"16530:12:24"},"nativeSrc":"16530:12:24","nodeType":"YulExpressionStatement","src":"16530:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"16503:7:24","nodeType":"YulIdentifier","src":"16503:7:24"},{"name":"headStart","nativeSrc":"16512:9:24","nodeType":"YulIdentifier","src":"16512:9:24"}],"functionName":{"name":"sub","nativeSrc":"16499:3:24","nodeType":"YulIdentifier","src":"16499:3:24"},"nativeSrc":"16499:23:24","nodeType":"YulFunctionCall","src":"16499:23:24"},{"kind":"number","nativeSrc":"16524:2:24","nodeType":"YulLiteral","src":"16524:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"16495:3:24","nodeType":"YulIdentifier","src":"16495:3:24"},"nativeSrc":"16495:32:24","nodeType":"YulFunctionCall","src":"16495:32:24"},"nativeSrc":"16492:52:24","nodeType":"YulIf","src":"16492:52:24"},{"nativeSrc":"16553:29:24","nodeType":"YulVariableDeclaration","src":"16553:29:24","value":{"arguments":[{"name":"headStart","nativeSrc":"16572:9:24","nodeType":"YulIdentifier","src":"16572:9:24"}],"functionName":{"name":"mload","nativeSrc":"16566:5:24","nodeType":"YulIdentifier","src":"16566:5:24"},"nativeSrc":"16566:16:24","nodeType":"YulFunctionCall","src":"16566:16:24"},"variables":[{"name":"value","nativeSrc":"16557:5:24","nodeType":"YulTypedName","src":"16557:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"16616:5:24","nodeType":"YulIdentifier","src":"16616:5:24"}],"functionName":{"name":"validator_revert_address","nativeSrc":"16591:24:24","nodeType":"YulIdentifier","src":"16591:24:24"},"nativeSrc":"16591:31:24","nodeType":"YulFunctionCall","src":"16591:31:24"},"nativeSrc":"16591:31:24","nodeType":"YulExpressionStatement","src":"16591:31:24"},{"nativeSrc":"16631:15:24","nodeType":"YulAssignment","src":"16631:15:24","value":{"name":"value","nativeSrc":"16641:5:24","nodeType":"YulIdentifier","src":"16641:5:24"},"variableNames":[{"name":"value0","nativeSrc":"16631:6:24","nodeType":"YulIdentifier","src":"16631:6:24"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nativeSrc":"16401:251:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16448:9:24","nodeType":"YulTypedName","src":"16448:9:24","type":""},{"name":"dataEnd","nativeSrc":"16459:7:24","nodeType":"YulTypedName","src":"16459:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"16471:6:24","nodeType":"YulTypedName","src":"16471:6:24","type":""}],"src":"16401:251:24"},{"body":{"nativeSrc":"16814:214:24","nodeType":"YulBlock","src":"16814:214:24","statements":[{"nativeSrc":"16824:26:24","nodeType":"YulAssignment","src":"16824:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"16836:9:24","nodeType":"YulIdentifier","src":"16836:9:24"},{"kind":"number","nativeSrc":"16847:2:24","nodeType":"YulLiteral","src":"16847:2:24","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"16832:3:24","nodeType":"YulIdentifier","src":"16832:3:24"},"nativeSrc":"16832:18:24","nodeType":"YulFunctionCall","src":"16832:18:24"},"variableNames":[{"name":"tail","nativeSrc":"16824:4:24","nodeType":"YulIdentifier","src":"16824:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"16866:9:24","nodeType":"YulIdentifier","src":"16866:9:24"},{"arguments":[{"name":"value0","nativeSrc":"16881:6:24","nodeType":"YulIdentifier","src":"16881:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16897:3:24","nodeType":"YulLiteral","src":"16897:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"16902:1:24","nodeType":"YulLiteral","src":"16902:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16893:3:24","nodeType":"YulIdentifier","src":"16893:3:24"},"nativeSrc":"16893:11:24","nodeType":"YulFunctionCall","src":"16893:11:24"},{"kind":"number","nativeSrc":"16906:1:24","nodeType":"YulLiteral","src":"16906:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16889:3:24","nodeType":"YulIdentifier","src":"16889:3:24"},"nativeSrc":"16889:19:24","nodeType":"YulFunctionCall","src":"16889:19:24"}],"functionName":{"name":"and","nativeSrc":"16877:3:24","nodeType":"YulIdentifier","src":"16877:3:24"},"nativeSrc":"16877:32:24","nodeType":"YulFunctionCall","src":"16877:32:24"}],"functionName":{"name":"mstore","nativeSrc":"16859:6:24","nodeType":"YulIdentifier","src":"16859:6:24"},"nativeSrc":"16859:51:24","nodeType":"YulFunctionCall","src":"16859:51:24"},"nativeSrc":"16859:51:24","nodeType":"YulExpressionStatement","src":"16859:51:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16930:9:24","nodeType":"YulIdentifier","src":"16930:9:24"},{"kind":"number","nativeSrc":"16941:2:24","nodeType":"YulLiteral","src":"16941:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"16926:3:24","nodeType":"YulIdentifier","src":"16926:3:24"},"nativeSrc":"16926:18:24","nodeType":"YulFunctionCall","src":"16926:18:24"},{"arguments":[{"name":"value1","nativeSrc":"16950:6:24","nodeType":"YulIdentifier","src":"16950:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"16966:3:24","nodeType":"YulLiteral","src":"16966:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"16971:1:24","nodeType":"YulLiteral","src":"16971:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"16962:3:24","nodeType":"YulIdentifier","src":"16962:3:24"},"nativeSrc":"16962:11:24","nodeType":"YulFunctionCall","src":"16962:11:24"},{"kind":"number","nativeSrc":"16975:1:24","nodeType":"YulLiteral","src":"16975:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"16958:3:24","nodeType":"YulIdentifier","src":"16958:3:24"},"nativeSrc":"16958:19:24","nodeType":"YulFunctionCall","src":"16958:19:24"}],"functionName":{"name":"and","nativeSrc":"16946:3:24","nodeType":"YulIdentifier","src":"16946:3:24"},"nativeSrc":"16946:32:24","nodeType":"YulFunctionCall","src":"16946:32:24"}],"functionName":{"name":"mstore","nativeSrc":"16919:6:24","nodeType":"YulIdentifier","src":"16919:6:24"},"nativeSrc":"16919:60:24","nodeType":"YulFunctionCall","src":"16919:60:24"},"nativeSrc":"16919:60:24","nodeType":"YulExpressionStatement","src":"16919:60:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"16999:9:24","nodeType":"YulIdentifier","src":"16999:9:24"},{"kind":"number","nativeSrc":"17010:2:24","nodeType":"YulLiteral","src":"17010:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"16995:3:24","nodeType":"YulIdentifier","src":"16995:3:24"},"nativeSrc":"16995:18:24","nodeType":"YulFunctionCall","src":"16995:18:24"},{"name":"value2","nativeSrc":"17015:6:24","nodeType":"YulIdentifier","src":"17015:6:24"}],"functionName":{"name":"mstore","nativeSrc":"16988:6:24","nodeType":"YulIdentifier","src":"16988:6:24"},"nativeSrc":"16988:34:24","nodeType":"YulFunctionCall","src":"16988:34:24"},"nativeSrc":"16988:34:24","nodeType":"YulExpressionStatement","src":"16988:34:24"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nativeSrc":"16657:371:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"16767:9:24","nodeType":"YulTypedName","src":"16767:9:24","type":""},{"name":"value2","nativeSrc":"16778:6:24","nodeType":"YulTypedName","src":"16778:6:24","type":""},{"name":"value1","nativeSrc":"16786:6:24","nodeType":"YulTypedName","src":"16786:6:24","type":""},{"name":"value0","nativeSrc":"16794:6:24","nodeType":"YulTypedName","src":"16794:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"16805:4:24","nodeType":"YulTypedName","src":"16805:4:24","type":""}],"src":"16657:371:24"},{"body":{"nativeSrc":"17162:145:24","nodeType":"YulBlock","src":"17162:145:24","statements":[{"nativeSrc":"17172:26:24","nodeType":"YulAssignment","src":"17172:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"17184:9:24","nodeType":"YulIdentifier","src":"17184:9:24"},{"kind":"number","nativeSrc":"17195:2:24","nodeType":"YulLiteral","src":"17195:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17180:3:24","nodeType":"YulIdentifier","src":"17180:3:24"},"nativeSrc":"17180:18:24","nodeType":"YulFunctionCall","src":"17180:18:24"},"variableNames":[{"name":"tail","nativeSrc":"17172:4:24","nodeType":"YulIdentifier","src":"17172:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17214:9:24","nodeType":"YulIdentifier","src":"17214:9:24"},{"arguments":[{"name":"value0","nativeSrc":"17229:6:24","nodeType":"YulIdentifier","src":"17229:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17245:3:24","nodeType":"YulLiteral","src":"17245:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"17250:1:24","nodeType":"YulLiteral","src":"17250:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"17241:3:24","nodeType":"YulIdentifier","src":"17241:3:24"},"nativeSrc":"17241:11:24","nodeType":"YulFunctionCall","src":"17241:11:24"},{"kind":"number","nativeSrc":"17254:1:24","nodeType":"YulLiteral","src":"17254:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"17237:3:24","nodeType":"YulIdentifier","src":"17237:3:24"},"nativeSrc":"17237:19:24","nodeType":"YulFunctionCall","src":"17237:19:24"}],"functionName":{"name":"and","nativeSrc":"17225:3:24","nodeType":"YulIdentifier","src":"17225:3:24"},"nativeSrc":"17225:32:24","nodeType":"YulFunctionCall","src":"17225:32:24"}],"functionName":{"name":"mstore","nativeSrc":"17207:6:24","nodeType":"YulIdentifier","src":"17207:6:24"},"nativeSrc":"17207:51:24","nodeType":"YulFunctionCall","src":"17207:51:24"},"nativeSrc":"17207:51:24","nodeType":"YulExpressionStatement","src":"17207:51:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17278:9:24","nodeType":"YulIdentifier","src":"17278:9:24"},{"kind":"number","nativeSrc":"17289:2:24","nodeType":"YulLiteral","src":"17289:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17274:3:24","nodeType":"YulIdentifier","src":"17274:3:24"},"nativeSrc":"17274:18:24","nodeType":"YulFunctionCall","src":"17274:18:24"},{"name":"value1","nativeSrc":"17294:6:24","nodeType":"YulIdentifier","src":"17294:6:24"}],"functionName":{"name":"mstore","nativeSrc":"17267:6:24","nodeType":"YulIdentifier","src":"17267:6:24"},"nativeSrc":"17267:34:24","nodeType":"YulFunctionCall","src":"17267:34:24"},"nativeSrc":"17267:34:24","nodeType":"YulExpressionStatement","src":"17267:34:24"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nativeSrc":"17033:274:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17123:9:24","nodeType":"YulTypedName","src":"17123:9:24","type":""},{"name":"value1","nativeSrc":"17134:6:24","nodeType":"YulTypedName","src":"17134:6:24","type":""},{"name":"value0","nativeSrc":"17142:6:24","nodeType":"YulTypedName","src":"17142:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17153:4:24","nodeType":"YulTypedName","src":"17153:4:24","type":""}],"src":"17033:274:24"},{"body":{"nativeSrc":"17390:167:24","nodeType":"YulBlock","src":"17390:167:24","statements":[{"body":{"nativeSrc":"17436:16:24","nodeType":"YulBlock","src":"17436:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"17445:1:24","nodeType":"YulLiteral","src":"17445:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"17448:1:24","nodeType":"YulLiteral","src":"17448:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"17438:6:24","nodeType":"YulIdentifier","src":"17438:6:24"},"nativeSrc":"17438:12:24","nodeType":"YulFunctionCall","src":"17438:12:24"},"nativeSrc":"17438:12:24","nodeType":"YulExpressionStatement","src":"17438:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"17411:7:24","nodeType":"YulIdentifier","src":"17411:7:24"},{"name":"headStart","nativeSrc":"17420:9:24","nodeType":"YulIdentifier","src":"17420:9:24"}],"functionName":{"name":"sub","nativeSrc":"17407:3:24","nodeType":"YulIdentifier","src":"17407:3:24"},"nativeSrc":"17407:23:24","nodeType":"YulFunctionCall","src":"17407:23:24"},{"kind":"number","nativeSrc":"17432:2:24","nodeType":"YulLiteral","src":"17432:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"17403:3:24","nodeType":"YulIdentifier","src":"17403:3:24"},"nativeSrc":"17403:32:24","nodeType":"YulFunctionCall","src":"17403:32:24"},"nativeSrc":"17400:52:24","nodeType":"YulIf","src":"17400:52:24"},{"nativeSrc":"17461:29:24","nodeType":"YulVariableDeclaration","src":"17461:29:24","value":{"arguments":[{"name":"headStart","nativeSrc":"17480:9:24","nodeType":"YulIdentifier","src":"17480:9:24"}],"functionName":{"name":"mload","nativeSrc":"17474:5:24","nodeType":"YulIdentifier","src":"17474:5:24"},"nativeSrc":"17474:16:24","nodeType":"YulFunctionCall","src":"17474:16:24"},"variables":[{"name":"value","nativeSrc":"17465:5:24","nodeType":"YulTypedName","src":"17465:5:24","type":""}]},{"expression":{"arguments":[{"name":"value","nativeSrc":"17521:5:24","nodeType":"YulIdentifier","src":"17521:5:24"}],"functionName":{"name":"validator_revert_bool","nativeSrc":"17499:21:24","nodeType":"YulIdentifier","src":"17499:21:24"},"nativeSrc":"17499:28:24","nodeType":"YulFunctionCall","src":"17499:28:24"},"nativeSrc":"17499:28:24","nodeType":"YulExpressionStatement","src":"17499:28:24"},{"nativeSrc":"17536:15:24","nodeType":"YulAssignment","src":"17536:15:24","value":{"name":"value","nativeSrc":"17546:5:24","nodeType":"YulIdentifier","src":"17546:5:24"},"variableNames":[{"name":"value0","nativeSrc":"17536:6:24","nodeType":"YulIdentifier","src":"17536:6:24"}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nativeSrc":"17312:245:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17356:9:24","nodeType":"YulTypedName","src":"17356:9:24","type":""},{"name":"dataEnd","nativeSrc":"17367:7:24","nodeType":"YulTypedName","src":"17367:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"17379:6:24","nodeType":"YulTypedName","src":"17379:6:24","type":""}],"src":"17312:245:24"},{"body":{"nativeSrc":"17769:222:24","nodeType":"YulBlock","src":"17769:222:24","statements":[{"expression":{"arguments":[{"name":"headStart","nativeSrc":"17786:9:24","nodeType":"YulIdentifier","src":"17786:9:24"},{"kind":"number","nativeSrc":"17797:2:24","nodeType":"YulLiteral","src":"17797:2:24","type":"","value":"96"}],"functionName":{"name":"mstore","nativeSrc":"17779:6:24","nodeType":"YulIdentifier","src":"17779:6:24"},"nativeSrc":"17779:21:24","nodeType":"YulFunctionCall","src":"17779:21:24"},"nativeSrc":"17779:21:24","nodeType":"YulExpressionStatement","src":"17779:21:24"},{"nativeSrc":"17809:64:24","nodeType":"YulAssignment","src":"17809:64:24","value":{"arguments":[{"name":"value0","nativeSrc":"17846:6:24","nodeType":"YulIdentifier","src":"17846:6:24"},{"arguments":[{"name":"headStart","nativeSrc":"17858:9:24","nodeType":"YulIdentifier","src":"17858:9:24"},{"kind":"number","nativeSrc":"17869:2:24","nodeType":"YulLiteral","src":"17869:2:24","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"17854:3:24","nodeType":"YulIdentifier","src":"17854:3:24"},"nativeSrc":"17854:18:24","nodeType":"YulFunctionCall","src":"17854:18:24"}],"functionName":{"name":"abi_encode_array_uint256_dyn","nativeSrc":"17817:28:24","nodeType":"YulIdentifier","src":"17817:28:24"},"nativeSrc":"17817:56:24","nodeType":"YulFunctionCall","src":"17817:56:24"},"variableNames":[{"name":"tail","nativeSrc":"17809:4:24","nodeType":"YulIdentifier","src":"17809:4:24"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17893:9:24","nodeType":"YulIdentifier","src":"17893:9:24"},{"kind":"number","nativeSrc":"17904:2:24","nodeType":"YulLiteral","src":"17904:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"17889:3:24","nodeType":"YulIdentifier","src":"17889:3:24"},"nativeSrc":"17889:18:24","nodeType":"YulFunctionCall","src":"17889:18:24"},{"arguments":[{"name":"value1","nativeSrc":"17913:6:24","nodeType":"YulIdentifier","src":"17913:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"17929:3:24","nodeType":"YulLiteral","src":"17929:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"17934:1:24","nodeType":"YulLiteral","src":"17934:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"17925:3:24","nodeType":"YulIdentifier","src":"17925:3:24"},"nativeSrc":"17925:11:24","nodeType":"YulFunctionCall","src":"17925:11:24"},{"kind":"number","nativeSrc":"17938:1:24","nodeType":"YulLiteral","src":"17938:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"17921:3:24","nodeType":"YulIdentifier","src":"17921:3:24"},"nativeSrc":"17921:19:24","nodeType":"YulFunctionCall","src":"17921:19:24"}],"functionName":{"name":"and","nativeSrc":"17909:3:24","nodeType":"YulIdentifier","src":"17909:3:24"},"nativeSrc":"17909:32:24","nodeType":"YulFunctionCall","src":"17909:32:24"}],"functionName":{"name":"mstore","nativeSrc":"17882:6:24","nodeType":"YulIdentifier","src":"17882:6:24"},"nativeSrc":"17882:60:24","nodeType":"YulFunctionCall","src":"17882:60:24"},"nativeSrc":"17882:60:24","nodeType":"YulExpressionStatement","src":"17882:60:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"17962:9:24","nodeType":"YulIdentifier","src":"17962:9:24"},{"kind":"number","nativeSrc":"17973:2:24","nodeType":"YulLiteral","src":"17973:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"17958:3:24","nodeType":"YulIdentifier","src":"17958:3:24"},"nativeSrc":"17958:18:24","nodeType":"YulFunctionCall","src":"17958:18:24"},{"name":"value2","nativeSrc":"17978:6:24","nodeType":"YulIdentifier","src":"17978:6:24"}],"functionName":{"name":"mstore","nativeSrc":"17951:6:24","nodeType":"YulIdentifier","src":"17951:6:24"},"nativeSrc":"17951:34:24","nodeType":"YulFunctionCall","src":"17951:34:24"},"nativeSrc":"17951:34:24","nodeType":"YulExpressionStatement","src":"17951:34:24"}]},"name":"abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__to_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed","nativeSrc":"17562:429:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"17722:9:24","nodeType":"YulTypedName","src":"17722:9:24","type":""},{"name":"value2","nativeSrc":"17733:6:24","nodeType":"YulTypedName","src":"17733:6:24","type":""},{"name":"value1","nativeSrc":"17741:6:24","nodeType":"YulTypedName","src":"17741:6:24","type":""},{"name":"value0","nativeSrc":"17749:6:24","nodeType":"YulTypedName","src":"17749:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"17760:4:24","nodeType":"YulTypedName","src":"17760:4:24","type":""}],"src":"17562:429:24"},{"body":{"nativeSrc":"18181:232:24","nodeType":"YulBlock","src":"18181:232:24","statements":[{"nativeSrc":"18191:27:24","nodeType":"YulAssignment","src":"18191:27:24","value":{"arguments":[{"name":"headStart","nativeSrc":"18203:9:24","nodeType":"YulIdentifier","src":"18203:9:24"},{"kind":"number","nativeSrc":"18214:3:24","nodeType":"YulLiteral","src":"18214:3:24","type":"","value":"128"}],"functionName":{"name":"add","nativeSrc":"18199:3:24","nodeType":"YulIdentifier","src":"18199:3:24"},"nativeSrc":"18199:19:24","nodeType":"YulFunctionCall","src":"18199:19:24"},"variableNames":[{"name":"tail","nativeSrc":"18191:4:24","nodeType":"YulIdentifier","src":"18191:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18234:9:24","nodeType":"YulIdentifier","src":"18234:9:24"},{"arguments":[{"name":"value0","nativeSrc":"18249:6:24","nodeType":"YulIdentifier","src":"18249:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"18265:3:24","nodeType":"YulLiteral","src":"18265:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"18270:1:24","nodeType":"YulLiteral","src":"18270:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"18261:3:24","nodeType":"YulIdentifier","src":"18261:3:24"},"nativeSrc":"18261:11:24","nodeType":"YulFunctionCall","src":"18261:11:24"},{"kind":"number","nativeSrc":"18274:1:24","nodeType":"YulLiteral","src":"18274:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"18257:3:24","nodeType":"YulIdentifier","src":"18257:3:24"},"nativeSrc":"18257:19:24","nodeType":"YulFunctionCall","src":"18257:19:24"}],"functionName":{"name":"and","nativeSrc":"18245:3:24","nodeType":"YulIdentifier","src":"18245:3:24"},"nativeSrc":"18245:32:24","nodeType":"YulFunctionCall","src":"18245:32:24"}],"functionName":{"name":"mstore","nativeSrc":"18227:6:24","nodeType":"YulIdentifier","src":"18227:6:24"},"nativeSrc":"18227:51:24","nodeType":"YulFunctionCall","src":"18227:51:24"},"nativeSrc":"18227:51:24","nodeType":"YulExpressionStatement","src":"18227:51:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18298:9:24","nodeType":"YulIdentifier","src":"18298:9:24"},{"kind":"number","nativeSrc":"18309:2:24","nodeType":"YulLiteral","src":"18309:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18294:3:24","nodeType":"YulIdentifier","src":"18294:3:24"},"nativeSrc":"18294:18:24","nodeType":"YulFunctionCall","src":"18294:18:24"},{"name":"value1","nativeSrc":"18314:6:24","nodeType":"YulIdentifier","src":"18314:6:24"}],"functionName":{"name":"mstore","nativeSrc":"18287:6:24","nodeType":"YulIdentifier","src":"18287:6:24"},"nativeSrc":"18287:34:24","nodeType":"YulFunctionCall","src":"18287:34:24"},"nativeSrc":"18287:34:24","nodeType":"YulExpressionStatement","src":"18287:34:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18341:9:24","nodeType":"YulIdentifier","src":"18341:9:24"},{"kind":"number","nativeSrc":"18352:2:24","nodeType":"YulLiteral","src":"18352:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18337:3:24","nodeType":"YulIdentifier","src":"18337:3:24"},"nativeSrc":"18337:18:24","nodeType":"YulFunctionCall","src":"18337:18:24"},{"name":"value2","nativeSrc":"18357:6:24","nodeType":"YulIdentifier","src":"18357:6:24"}],"functionName":{"name":"mstore","nativeSrc":"18330:6:24","nodeType":"YulIdentifier","src":"18330:6:24"},"nativeSrc":"18330:34:24","nodeType":"YulFunctionCall","src":"18330:34:24"},"nativeSrc":"18330:34:24","nodeType":"YulExpressionStatement","src":"18330:34:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18384:9:24","nodeType":"YulIdentifier","src":"18384:9:24"},{"kind":"number","nativeSrc":"18395:2:24","nodeType":"YulLiteral","src":"18395:2:24","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"18380:3:24","nodeType":"YulIdentifier","src":"18380:3:24"},"nativeSrc":"18380:18:24","nodeType":"YulFunctionCall","src":"18380:18:24"},{"name":"value3","nativeSrc":"18400:6:24","nodeType":"YulIdentifier","src":"18400:6:24"}],"functionName":{"name":"mstore","nativeSrc":"18373:6:24","nodeType":"YulIdentifier","src":"18373:6:24"},"nativeSrc":"18373:34:24","nodeType":"YulFunctionCall","src":"18373:34:24"},"nativeSrc":"18373:34:24","nodeType":"YulExpressionStatement","src":"18373:34:24"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"17996:417:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18126:9:24","nodeType":"YulTypedName","src":"18126:9:24","type":""},{"name":"value3","nativeSrc":"18137:6:24","nodeType":"YulTypedName","src":"18137:6:24","type":""},{"name":"value2","nativeSrc":"18145:6:24","nodeType":"YulTypedName","src":"18145:6:24","type":""},{"name":"value1","nativeSrc":"18153:6:24","nodeType":"YulTypedName","src":"18153:6:24","type":""},{"name":"value0","nativeSrc":"18161:6:24","nodeType":"YulTypedName","src":"18161:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18172:4:24","nodeType":"YulTypedName","src":"18172:4:24","type":""}],"src":"17996:417:24"},{"body":{"nativeSrc":"18575:162:24","nodeType":"YulBlock","src":"18575:162:24","statements":[{"nativeSrc":"18585:26:24","nodeType":"YulAssignment","src":"18585:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"18597:9:24","nodeType":"YulIdentifier","src":"18597:9:24"},{"kind":"number","nativeSrc":"18608:2:24","nodeType":"YulLiteral","src":"18608:2:24","type":"","value":"96"}],"functionName":{"name":"add","nativeSrc":"18593:3:24","nodeType":"YulIdentifier","src":"18593:3:24"},"nativeSrc":"18593:18:24","nodeType":"YulFunctionCall","src":"18593:18:24"},"variableNames":[{"name":"tail","nativeSrc":"18585:4:24","nodeType":"YulIdentifier","src":"18585:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"18627:9:24","nodeType":"YulIdentifier","src":"18627:9:24"},{"name":"value0","nativeSrc":"18638:6:24","nodeType":"YulIdentifier","src":"18638:6:24"}],"functionName":{"name":"mstore","nativeSrc":"18620:6:24","nodeType":"YulIdentifier","src":"18620:6:24"},"nativeSrc":"18620:25:24","nodeType":"YulFunctionCall","src":"18620:25:24"},"nativeSrc":"18620:25:24","nodeType":"YulExpressionStatement","src":"18620:25:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18665:9:24","nodeType":"YulIdentifier","src":"18665:9:24"},{"kind":"number","nativeSrc":"18676:2:24","nodeType":"YulLiteral","src":"18676:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"18661:3:24","nodeType":"YulIdentifier","src":"18661:3:24"},"nativeSrc":"18661:18:24","nodeType":"YulFunctionCall","src":"18661:18:24"},{"name":"value1","nativeSrc":"18681:6:24","nodeType":"YulIdentifier","src":"18681:6:24"}],"functionName":{"name":"mstore","nativeSrc":"18654:6:24","nodeType":"YulIdentifier","src":"18654:6:24"},"nativeSrc":"18654:34:24","nodeType":"YulFunctionCall","src":"18654:34:24"},"nativeSrc":"18654:34:24","nodeType":"YulExpressionStatement","src":"18654:34:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"18708:9:24","nodeType":"YulIdentifier","src":"18708:9:24"},{"kind":"number","nativeSrc":"18719:2:24","nodeType":"YulLiteral","src":"18719:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"18704:3:24","nodeType":"YulIdentifier","src":"18704:3:24"},"nativeSrc":"18704:18:24","nodeType":"YulFunctionCall","src":"18704:18:24"},{"name":"value2","nativeSrc":"18724:6:24","nodeType":"YulIdentifier","src":"18724:6:24"}],"functionName":{"name":"mstore","nativeSrc":"18697:6:24","nodeType":"YulIdentifier","src":"18697:6:24"},"nativeSrc":"18697:34:24","nodeType":"YulFunctionCall","src":"18697:34:24"},"nativeSrc":"18697:34:24","nodeType":"YulExpressionStatement","src":"18697:34:24"}]},"name":"abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed","nativeSrc":"18418:319:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18528:9:24","nodeType":"YulTypedName","src":"18528:9:24","type":""},{"name":"value2","nativeSrc":"18539:6:24","nodeType":"YulTypedName","src":"18539:6:24","type":""},{"name":"value1","nativeSrc":"18547:6:24","nodeType":"YulTypedName","src":"18547:6:24","type":""},{"name":"value0","nativeSrc":"18555:6:24","nodeType":"YulTypedName","src":"18555:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"18566:4:24","nodeType":"YulTypedName","src":"18566:4:24","type":""}],"src":"18418:319:24"},{"body":{"nativeSrc":"18823:103:24","nodeType":"YulBlock","src":"18823:103:24","statements":[{"body":{"nativeSrc":"18869:16:24","nodeType":"YulBlock","src":"18869:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"18878:1:24","nodeType":"YulLiteral","src":"18878:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"18881:1:24","nodeType":"YulLiteral","src":"18881:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"18871:6:24","nodeType":"YulIdentifier","src":"18871:6:24"},"nativeSrc":"18871:12:24","nodeType":"YulFunctionCall","src":"18871:12:24"},"nativeSrc":"18871:12:24","nodeType":"YulExpressionStatement","src":"18871:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"18844:7:24","nodeType":"YulIdentifier","src":"18844:7:24"},{"name":"headStart","nativeSrc":"18853:9:24","nodeType":"YulIdentifier","src":"18853:9:24"}],"functionName":{"name":"sub","nativeSrc":"18840:3:24","nodeType":"YulIdentifier","src":"18840:3:24"},"nativeSrc":"18840:23:24","nodeType":"YulFunctionCall","src":"18840:23:24"},{"kind":"number","nativeSrc":"18865:2:24","nodeType":"YulLiteral","src":"18865:2:24","type":"","value":"32"}],"functionName":{"name":"slt","nativeSrc":"18836:3:24","nodeType":"YulIdentifier","src":"18836:3:24"},"nativeSrc":"18836:32:24","nodeType":"YulFunctionCall","src":"18836:32:24"},"nativeSrc":"18833:52:24","nodeType":"YulIf","src":"18833:52:24"},{"nativeSrc":"18894:26:24","nodeType":"YulAssignment","src":"18894:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"18910:9:24","nodeType":"YulIdentifier","src":"18910:9:24"}],"functionName":{"name":"mload","nativeSrc":"18904:5:24","nodeType":"YulIdentifier","src":"18904:5:24"},"nativeSrc":"18904:16:24","nodeType":"YulFunctionCall","src":"18904:16:24"},"variableNames":[{"name":"value0","nativeSrc":"18894:6:24","nodeType":"YulIdentifier","src":"18894:6:24"}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nativeSrc":"18742:184:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"18789:9:24","nodeType":"YulTypedName","src":"18789:9:24","type":""},{"name":"dataEnd","nativeSrc":"18800:7:24","nodeType":"YulTypedName","src":"18800:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"18812:6:24","nodeType":"YulTypedName","src":"18812:6:24","type":""}],"src":"18742:184:24"},{"body":{"nativeSrc":"19032:102:24","nodeType":"YulBlock","src":"19032:102:24","statements":[{"nativeSrc":"19042:26:24","nodeType":"YulAssignment","src":"19042:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"19054:9:24","nodeType":"YulIdentifier","src":"19054:9:24"},{"kind":"number","nativeSrc":"19065:2:24","nodeType":"YulLiteral","src":"19065:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"19050:3:24","nodeType":"YulIdentifier","src":"19050:3:24"},"nativeSrc":"19050:18:24","nodeType":"YulFunctionCall","src":"19050:18:24"},"variableNames":[{"name":"tail","nativeSrc":"19042:4:24","nodeType":"YulIdentifier","src":"19042:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"19084:9:24","nodeType":"YulIdentifier","src":"19084:9:24"},{"arguments":[{"name":"value0","nativeSrc":"19099:6:24","nodeType":"YulIdentifier","src":"19099:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"19115:3:24","nodeType":"YulLiteral","src":"19115:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"19120:1:24","nodeType":"YulLiteral","src":"19120:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"19111:3:24","nodeType":"YulIdentifier","src":"19111:3:24"},"nativeSrc":"19111:11:24","nodeType":"YulFunctionCall","src":"19111:11:24"},{"kind":"number","nativeSrc":"19124:1:24","nodeType":"YulLiteral","src":"19124:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"19107:3:24","nodeType":"YulIdentifier","src":"19107:3:24"},"nativeSrc":"19107:19:24","nodeType":"YulFunctionCall","src":"19107:19:24"}],"functionName":{"name":"and","nativeSrc":"19095:3:24","nodeType":"YulIdentifier","src":"19095:3:24"},"nativeSrc":"19095:32:24","nodeType":"YulFunctionCall","src":"19095:32:24"}],"functionName":{"name":"mstore","nativeSrc":"19077:6:24","nodeType":"YulIdentifier","src":"19077:6:24"},"nativeSrc":"19077:51:24","nodeType":"YulFunctionCall","src":"19077:51:24"},"nativeSrc":"19077:51:24","nodeType":"YulExpressionStatement","src":"19077:51:24"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"18931:203:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"19001:9:24","nodeType":"YulTypedName","src":"19001:9:24","type":""},{"name":"value0","nativeSrc":"19012:6:24","nodeType":"YulTypedName","src":"19012:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"19023:4:24","nodeType":"YulTypedName","src":"19023:4:24","type":""}],"src":"18931:203:24"},{"body":{"nativeSrc":"19276:150:24","nodeType":"YulBlock","src":"19276:150:24","statements":[{"nativeSrc":"19286:27:24","nodeType":"YulVariableDeclaration","src":"19286:27:24","value":{"arguments":[{"name":"value0","nativeSrc":"19306:6:24","nodeType":"YulIdentifier","src":"19306:6:24"}],"functionName":{"name":"mload","nativeSrc":"19300:5:24","nodeType":"YulIdentifier","src":"19300:5:24"},"nativeSrc":"19300:13:24","nodeType":"YulFunctionCall","src":"19300:13:24"},"variables":[{"name":"length","nativeSrc":"19290:6:24","nodeType":"YulTypedName","src":"19290:6:24","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"19361:6:24","nodeType":"YulIdentifier","src":"19361:6:24"},{"kind":"number","nativeSrc":"19369:4:24","nodeType":"YulLiteral","src":"19369:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19357:3:24","nodeType":"YulIdentifier","src":"19357:3:24"},"nativeSrc":"19357:17:24","nodeType":"YulFunctionCall","src":"19357:17:24"},{"name":"pos","nativeSrc":"19376:3:24","nodeType":"YulIdentifier","src":"19376:3:24"},{"name":"length","nativeSrc":"19381:6:24","nodeType":"YulIdentifier","src":"19381:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"19322:34:24","nodeType":"YulIdentifier","src":"19322:34:24"},"nativeSrc":"19322:66:24","nodeType":"YulFunctionCall","src":"19322:66:24"},"nativeSrc":"19322:66:24","nodeType":"YulExpressionStatement","src":"19322:66:24"},{"nativeSrc":"19397:23:24","nodeType":"YulAssignment","src":"19397:23:24","value":{"arguments":[{"name":"pos","nativeSrc":"19408:3:24","nodeType":"YulIdentifier","src":"19408:3:24"},{"name":"length","nativeSrc":"19413:6:24","nodeType":"YulIdentifier","src":"19413:6:24"}],"functionName":{"name":"add","nativeSrc":"19404:3:24","nodeType":"YulIdentifier","src":"19404:3:24"},"nativeSrc":"19404:16:24","nodeType":"YulFunctionCall","src":"19404:16:24"},"variableNames":[{"name":"end","nativeSrc":"19397:3:24","nodeType":"YulIdentifier","src":"19397:3:24"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"19139:287:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"19252:3:24","nodeType":"YulTypedName","src":"19252:3:24","type":""},{"name":"value0","nativeSrc":"19257:6:24","nodeType":"YulTypedName","src":"19257:6:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"19268:3:24","nodeType":"YulTypedName","src":"19268:3:24","type":""}],"src":"19139:287:24"}]},"contents":"{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_uint256_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_uint256_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint256_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let value := 0\n            value := calldataload(src)\n            mstore(dst, value)\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_array_bool_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint256_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let value := calldataload(src)\n            validator_revert_bool(value)\n            mstore(dst, value)\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_array$_t_bool_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 96))\n        if gt(offset_3, 0xffffffffffffffff) { revert(0, 0) }\n        value3 := abi_decode_array_uint256_dyn(add(headStart, offset_3), dataEnd)\n        let offset_4 := calldataload(add(headStart, 128))\n        if gt(offset_4, 0xffffffffffffffff) { revert(0, 0) }\n        value4 := abi_decode_array_bool_dyn(add(headStart, offset_4), dataEnd)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n    }\n    function abi_decode_array_address_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        let dst := allocate_memory(array_allocation_size_array_uint256_dyn(length))\n        let array_1 := dst\n        mstore(dst, length)\n        dst := add(dst, 0x20)\n        let srcEnd := add(add(offset, shl(5, length)), 0x20)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, 0x20)\n        for { } lt(src, srcEnd) { src := add(src, 0x20) }\n        {\n            let value := calldataload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, 0x20)\n        }\n        array := array_1\n    }\n    function abi_decode_tuple_t_addresst_array$_t_address_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_array_address_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_array_address_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_1)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let array := allocate_memory(add(and(add(length, 0x1f), not(31)), 32))\n        mstore(array, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(array, 32), add(_1, 32), length)\n        mstore(add(add(array, length), 32), 0)\n        value1 := array\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_address_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, iszero(iszero(mload(srcPtr))))\n            pos := add(pos, 32)\n            srcPtr := add(srcPtr, 32)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\n    }\n    function abi_encode_struct_ViewPermission(value, pos)\n    {\n        mstore(pos, mload(value))\n        mstore(add(pos, 0x20), mload(add(value, 0x20)))\n        mstore(add(pos, 0x40), iszero(iszero(mload(add(value, 0x40)))))\n    }\n    function abi_encode_tuple_t_struct$_ViewPermission_$4075_memory_ptr__to_t_struct$_ViewPermission_$4075_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        abi_encode_struct_ViewPermission(value0, headStart)\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 64))\n        value2 := value_1\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := 0\n        value_1 := calldataload(add(headStart, 32))\n        value1 := value_1\n        let value_2 := 0\n        value_2 := calldataload(add(headStart, 64))\n        value2 := value_2\n        let value_3 := 0\n        value_3 := calldataload(add(headStart, 96))\n        value3 := value_3\n        let value_4 := calldataload(add(headStart, 128))\n        validator_revert_bool(value_4)\n        value4 := value_4\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_ViewPermission_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let tail_1 := add(headStart, 32)\n        mstore(headStart, 32)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, 32)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            abi_encode_struct_ViewPermission(mload(srcPtr), pos)\n            pos := add(pos, 0x60)\n            srcPtr := add(srcPtr, 32)\n        }\n        tail := pos\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_uint256_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, 0xffffffffffffffff) { revert(0, 0) }\n        value1 := abi_decode_array_uint256_dyn(add(headStart, offset_1), dataEnd)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_array_uint256_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        pos := add(pos, 0x20)\n        let srcPtr := add(value, 0x20)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, 0x20)\n            srcPtr := add(srcPtr, 0x20)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_uint256__to_t_array$_t_uint256_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 64))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__to_t_array$_t_uint256_$dyn_memory_ptr_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        tail := abi_encode_array_uint256_dyn(value0, add(headStart, 96))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n}","id":24,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"287":[{"length":32,"start":9213},{"length":32,"start":9254},{"length":32,"start":9615}]},"linkReferences":{},"object":"6080604052600436106101cd5760003560e01c806376319190116100f757806399ea24fe11610095578063b6f1d14011610064578063b6f1d14014610557578063c3c12e6914610577578063caae24b31461058a578063f1aa52f4146105aa57600080fd5b806399ea24fe146104ac578063ad3cb1cc146104cc578063b1b105fe1461050a578063b303f53f1461052a57600080fd5b806386778641116100d1578063867786411461042a5780638d13660e1461044a5780638f0ff11b146104775780638fd3ab801461049757600080fd5b806376319190146103d5578063773f2054146103f55780638456cb591461041557600080fd5b806340033b3d1161016f57806352d1902d1161013e57806352d1902d1461035d57806354fd4d50146103805780636d69fcaf1461039557806370480275146103b557600080fd5b806340033b3d146102ca5780634a200fa5146102fd5780634f1ef2861461031d578063529e2b321461033057600080fd5b806321f06438116101ab57806321f0643814610249578063240028e81461025c5780633428cebb146102955780633f4ba83a146102b557600080fd5b806305059571146101d257806309b952be146102075780631785f53c14610229575b600080fd5b3480156101de57600080fd5b506101f26101ed366004612801565b6105ca565b60405190151581526020015b60405180910390f35b34801561021357600080fd5b50610227610222366004612978565b610749565b005b34801561023557600080fd5b50610227610244366004612a5f565b610979565b610227610257366004612a7c565b610a14565b34801561026857600080fd5b506101f2610277366004612a5f565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156102a157600080fd5b506102276102b0366004612ab8565b610ba3565b3480156102c157600080fd5b50610227610c58565b3480156102d657600080fd5b506101f26102e5366004612af0565b60009081526002602052604090206004015460ff1690565b34801561030957600080fd5b50610227610318366004612b70565b610cb8565b61022761032b366004612be9565b610fee565b34801561033c57600080fd5b5061035061034b366004612c94565b61100d565b6040516101fe9190612cfb565b34801561036957600080fd5b5061037261131a565b6040519081526020016101fe565b34801561038c57600080fd5b50600654610372565b3480156103a157600080fd5b506102276103b0366004612a5f565b611337565b3480156103c157600080fd5b506102276103d0366004612a5f565b6113da565b3480156103e157600080fd5b506102276103f0366004612a5f565b61147b565b34801561040157600080fd5b50610227610410366004612d40565b61151b565b34801561042157600080fd5b5061022761159f565b34801561043657600080fd5b50610227610445366004612ab8565b611602565b34801561045657600080fd5b5061046a610465366004612801565b6117c7565b6040516101fe9190612d62565b34801561048357600080fd5b50610227610492366004612d85565b611840565b3480156104a357600080fd5b506102276119bc565b3480156104b857600080fd5b506102276104c7366004612df4565b611a14565b3480156104d857600080fd5b506104fd604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101fe9190612e60565b34801561051657600080fd5b50610227610525366004612e93565b611c69565b34801561053657600080fd5b5061054a610545366004612ee0565b611cfc565b6040516101fe9190612f19565b34801561056357600080fd5b50610227610572366004612ab8565b611e17565b610227610585366004612af0565b612012565b34801561059657600080fd5b506101f26105a5366004612801565b61213b565b3480156105b657600080fd5b506102276105c5366004612f72565b6121d2565b3360009081526001602052604081205460ff166105fa57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03831660009081526003602090815260408083208584529091529020600281015460ff16158061063357506001810154155b156106515760405163fcd7a1b560e01b815260040160405180910390fd5b600083815260026020526040902060030154815461066f9190612fbd565b42111561068f5760405163fcd7a1b560e01b815260040160405180910390fd5b6001810180549060006106a183612fd0565b919050555082846001600160a01b03167f2ccc6c74b339e9d58b89aa6bb58d0519712aeff106f7981d466f54572cb88b4283600101546040516106e691815260200190565b60405180910390a3806001015460000361073d5760028101805460ff1916905560405183906001600160a01b038616907f294e395c96ee31e4373f6b284b107e5341ffa80f2c53e582bc3cfb1f9efe500e90600090a35b60019150505b92915050565b3360009081526001602052604090205460ff1661077957604051637bfa4b9f60e01b815260040160405180910390fd5b8351855114158061078c57508251855114155b8061079957508151855114155b806107a657508051855114155b156107c45760405163512509d360e11b815260040160405180910390fd5b60005b8551811015610971578481815181106107e2576107e2612fe7565b60200260200101516000600201600088848151811061080357610803612fe7565b602002602001015181526020019081526020016000206001018190555083818151811061083257610832612fe7565b60200260200101516000600201600088848151811061085357610853612fe7565b602002602001015181526020019081526020016000206002018190555082818151811061088257610882612fe7565b6020026020010151600060020160008884815181106108a3576108a3612fe7565b60200260200101518152602001908152602001600020600301819055508181815181106108d2576108d2612fe7565b6020026020010151600060020160008884815181106108f3576108f3612fe7565b6020026020010151815260200190815260200160002060040160006101000a81548160ff02191690831515021790555085818151811061093557610935612fe7565b60200260200101517fa7c3f5f04f0c05ad82fcdf81039da5a01bf41ce2769b7b347afa43bb65e4426660405160405180910390a26001016107c7565b505050505050565b6000546001600160a01b031633146109a4576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b0381166109cb5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517fa3b62bc36326052d97ea62d63c3d60308ed4c3ea8ac079dd8499f1e9c4f80c0f9190a250565b610a1c6122f4565b60055460ff1615610a405760405163ab35696f60e01b815260040160405180910390fd5b6000805b8251811015610aec5760006002016000848381518110610a6657610a66612fe7565b60209081029190910181015182528101919091526040016000206004015460ff16610aa45760405163ab4142cf60e01b815260040160405180910390fd5b60006002016000848381518110610abd57610abd612fe7565b602002602001015181526020019081526020016000206001015482610ae29190612fbd565b9150600101610a44565b50803414610b0d5760405163cd1c886760e01b815260040160405180910390fd5b60005b8251811015610b4457610b3c33848381518110610b2f57610b2f612fe7565b602002602001015161232c565b600101610b10565b50336001600160a01b03167faec2d14270982470108e2c88fecca013dba6caf4edb3c8c7ac6d9db8b26cb89f8334604051610b80929190613039565b60405180910390a250610ba0600160008051602061311983398151915255565b50565b3360009081526001602052604090205460ff16610bd357604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b038216610bfa5760405163d92e233d60e01b815260040160405180910390fd5b60008381526002602090815260408083206001600160a01b038616808552908352928190208490555183815285917f376716bd86293ff8b34061b9af3cac5116f15e0f2cbf689d822b6d6d7b1eeca9910160405180910390a3505050565b6000546001600160a01b03163314610c83576040516330cd747160e01b815260040160405180910390fd5b6005805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6000610cc26123af565b805490915060ff600160401b82041615906001600160401b0316600081158015610ce95750825b90506000826001600160401b03166001148015610d055750303b155b905081158015610d13575080155b15610d315760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610d5b57845460ff60401b1916600160401b1785555b6001600160a01b038816610d825760405163d92e233d60e01b815260040160405180910390fd5b610d8a6123d8565b610d926123e2565b600080546001600160a01b0319166001600160a01b038a1617815560016006556005805460ff191690555b8751811015610eab5760006001600160a01b0316888281518110610de357610de3612fe7565b60200260200101516001600160a01b031614610ea3576001600060010160008a8481518110610e1457610e14612fe7565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550878181518110610e6557610e65612fe7565b60200260200101516001600160a01b03167f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e33960405160405180910390a25b600101610dbd565b5060005b8651811015610f9d5760006001600160a01b0316878281518110610ed557610ed5612fe7565b60200260200101516001600160a01b031614610f9557600160006004016000898481518110610f0657610f06612fe7565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550868181518110610f5757610f57612fe7565b60200260200101516001600160a01b03167fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d760405160405180910390a25b600101610eaf565b508315610fe457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b610ff66123f2565b610fff82612497565b61100982826124c2565b5050565b3360009081526001602052604090205460609060ff1661104057604051637bfa4b9f60e01b815260040160405180910390fd5b81518351146110625760405163512509d360e11b815260040160405180910390fd5b600083516001600160401b0381111561107d5761107d61282d565b6040519080825280602002602001820160405280156110a6578160200160208202803683370190505b50905060005b84518110156113125760008060030160008784815181106110cf576110cf612fe7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600086848151811061110b5761110b612fe7565b6020026020010151815260200190815260200160002090508060020160009054906101000a900460ff16158061114357506001810154155b1561117257600083838151811061115c5761115c612fe7565b911515602092830291909101909101525061130a565b6000600201600086848151811061118b5761118b612fe7565b602002602001015181526020019081526020016000206003015481600001546111b49190612fbd565b4211156111cf57600083838151811061115c5761115c612fe7565b6001810180549060006111e183612fd0565b91905055508482815181106111f8576111f8612fe7565b602002602001015186838151811061121257611212612fe7565b60200260200101516001600160a01b03167f2ccc6c74b339e9d58b89aa6bb58d0519712aeff106f7981d466f54572cb88b42836001015460405161125891815260200190565b60405180910390a380600101546000036112e45760028101805460ff19169055845185908390811061128c5761128c612fe7565b60200260200101518683815181106112a6576112a6612fe7565b60200260200101516001600160a01b03167f294e395c96ee31e4373f6b284b107e5341ffa80f2c53e582bc3cfb1f9efe500e60405160405180910390a35b60018383815181106112f8576112f8612fe7565b91151560209283029190910190910152505b6001016110ac565b509392505050565b6000611324612584565b506000805160206130f983398151915290565b3360009081526001602052604090205460ff1661136757604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b03811661138e5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517fd1be2e90bd3d24839d9dd94ad871068e1f9688b02fa43f2a62c9975dfa9de2d79190a250565b6000546001600160a01b03163314611405576040516330cd747160e01b815260040160405180910390fd5b6001600160a01b03811661142c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f44d6d25963f097ad14f29f06854a01f575648a1ef82f30e562ccd3889717e3399190a250565b3360009081526001602052604090205460ff166114ab57604051637bfa4b9f60e01b815260040160405180910390fd5b6001600160a01b0381166114d25760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038116600081815260046020526040808220805460ff19169055517fbea12876694c4055c71f74308f752b9027cf3d554194000a366abddfc239a3069190a250565b3360009081526001602052604090205460ff1661154b57604051637bfa4b9f60e01b815260040160405180910390fd5b600082815260026020526040908190206001018290555182907f40175eba104d8383c936ec96a9da297986b13a86e5b2a19296171b11533e59ce906115939084815260200190565b60405180910390a25050565b6000546001600160a01b031633146115ca576040516330cd747160e01b815260040160405180910390fd5b6005805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b61160a6122f4565b60055460ff161561162e5760405163ab35696f60e01b815260040160405180910390fd5b600083815260026020526040902060040154839060ff166116625760405163ab4142cf60e01b815260040160405180910390fd5b6040516331a9108f60e11b81526004810183905233906001600160a01b03851690636352211e90602401602060405180830381865afa1580156116a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cd919061305b565b6001600160a01b0316146116f45760405163fcd7a1b560e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd90606401600060405180830381600087803b15801561174257600080fd5b505af1158015611756573d6000803e3d6000fd5b50505050611764338561232c565b604080516001600160a01b038516815260208101849052859133917fd0de3e759b6d8ae4ab8dfd56f0869b691034bf2f14b896155287e5cd61d66a70910160405180910390a3506117c2600160008051602061311983398151915255565b505050565b6117ed604051806060016040528060008152602001600081526020016000151581525090565b506001600160a01b03821660009081526003602090815260408083208484528252918290208251606081018452815481526001820154928101929092526002015460ff1615159181019190915292915050565b3360009081526001602052604090205460ff1661187057604051637bfa4b9f60e01b815260040160405180910390fd5b80518351146118925760405163512509d360e11b815260040160405180910390fd5b6001600160a01b0382166118b95760405163d92e233d60e01b815260040160405180910390fd5b60005b83518110156119b6578181815181106118d7576118d7612fe7565b6020026020010151600060020160008684815181106118f8576118f8612fe7565b602002602001015181526020019081526020016000206000016000856001600160a01b03166001600160a01b0316815260200190815260200160002081905550826001600160a01b031684828151811061195457611954612fe7565b60200260200101517f376716bd86293ff8b34061b9af3cac5116f15e0f2cbf689d822b6d6d7b1eeca984848151811061198f5761198f612fe7565b60200260200101516040516119a691815260200190565b60405180910390a36001016118bc565b50505050565b6000546001600160a01b031633146119e7576040516330cd747160e01b815260040160405180910390fd5b60405130907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2565b611a1c6122f4565b60055460ff1615611a405760405163ab35696f60e01b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff16611a795760405163350b944160e11b815260040160405180910390fd5b6000805b8451811015611b485760006002016000868381518110611a9f57611a9f612fe7565b60209081029190910181015182528101919091526040016000206004015460ff16611add5760405163ab4142cf60e01b815260040160405180910390fd5b60006002016000868381518110611af657611af6612fe7565b602002602001015181526020019081526020016000206000016000856001600160a01b03166001600160a01b031681526020019081526020016000205482611b3e9190612fbd565b9150600101611a7d565b50808214611b695760405163cd1c886760e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd906064016020604051808303816000875af1158015611bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be09190613078565b5060005b8451811015611c0b57611c0333868381518110610b2f57610b2f612fe7565b600101611be4565b50336001600160a01b03167f2be07a645f06bfa8b189b4f0aba9bf2109d098d03cbede0449641495bba5d53d858585604051611c4993929190613095565b60405180910390a2506117c2600160008051602061311983398151915255565b3360009081526001602052604090205460ff16611c9957604051637bfa4b9f60e01b815260040160405180910390fd5b600085815260026020819052604080832060018101889055918201869055600382018590556004909101805460ff19168415151790555186917fa7c3f5f04f0c05ad82fcdf81039da5a01bf41ce2769b7b347afa43bb65e4426691a25050505050565b6060600082516001600160401b03811115611d1957611d1961282d565b604051908082528060200260200182016040528015611d7057816020015b611d5d604051806060016040528060008152602001600081526020016000151581525090565b815260200190600190039081611d375790505b50905060005b8351811015611312576001600160a01b03851660009081526003602052604081208551909190869084908110611dae57611dae612fe7565b60209081029190910181015182528181019290925260409081016000208151606081018352815481526001820154938101939093526002015460ff161515908201528251839083908110611e0457611e04612fe7565b6020908102919091010152600101611d76565b611e1f6122f4565b60055460ff1615611e435760405163ab35696f60e01b815260040160405180910390fd5b600083815260026020526040902060040154839060ff16611e775760405163ab4142cf60e01b815260040160405180910390fd5b6001600160a01b03831660009081526004602052604090205460ff16611eb05760405163350b944160e11b815260040160405180910390fd5b60008481526002602090815260408083206001600160a01b03871684529091529020548214611ef25760405163cd1c886760e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b038416906323b872dd906064016020604051808303816000875af1158015611f45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f699190613078565b50611f74338561232c565b600084815260026020526040812060030154611f909042612fbd565b6000868152600260208181526040928390209091015482516001600160a01b038916815291820187905281830152606081018390529051919250869133917f180fe4b156a592a405cdd866f58883063db683348215e97cf864d6bf9679261c919081900360800190a350506117c2600160008051602061311983398151915255565b61201a6122f4565b60055460ff161561203e5760405163ab35696f60e01b815260040160405180910390fd5b600081815260026020526040902060040154819060ff166120725760405163ab4142cf60e01b815260040160405180910390fd5b60008281526002602052604090206001015434146120a35760405163cd1c886760e01b815260040160405180910390fd5b6120ad338361232c565b6000828152600260205260408120600301546120c99042612fbd565b60008481526002602081815260409283902090910154825134815291820152908101829052909150839033907f8c61c0751c0e925b40e7a528992e1413a937c058ac7eafd0c61f75abd3a8225d9060600160405180910390a35050610ba0600160008051602061311983398151915255565b6001600160a01b038216600090815260036020908152604080832084845282528083208151606081018352815481526001820154938101939093526002015460ff16158015918301919091528061219457506020810151155b156121a3576000915050610743565b60008381526002602052604090206003015481516121c19190612fbd565b42111561073d576000915050610743565b3360009081526001602052604090205460ff1661220257604051637bfa4b9f60e01b815260040160405180910390fd5b80518251146122245760405163512509d360e11b815260040160405180910390fd5b60005b82518110156117c25781818151811061224257612242612fe7565b60200260200101516000600201600085848151811061226357612263612fe7565b602002602001015181526020019081526020016000206001018190555082818151811061229257612292612fe7565b60200260200101517f40175eba104d8383c936ec96a9da297986b13a86e5b2a19296171b11533e59ce8383815181106122cd576122cd612fe7565b60200260200101516040516122e491815260200190565b60405180910390a2600101612227565b60008051602061311983398151915280546001190161232657604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6040805160608101825242815260008381526002602081815284832082015481850190815260018587018181526001600160a01b039990991685526003835286852097855296909152939091209151825591519281019290925591519101805460ff1916911515919091179055565b600160008051602061311983398151915255565b6000807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00610743565b6123e06125cd565b565b6123ea6125cd565b6123e06125f2565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061247957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661246d6000805160206130f9833981519152546001600160a01b031690565b6001600160a01b031614155b156123e05760405163703e46dd60e11b815260040160405180910390fd5b6000546001600160a01b03163314610ba0576040516330cd747160e01b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561251c575060408051601f3d908101601f19168201909252612519918101906130c3565b60015b61254957604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b6000805160206130f9833981519152811461257a57604051632a87526960e21b815260048101829052602401612540565b6117c283836125fa565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146123e05760405163703e46dd60e11b815260040160405180910390fd5b6125d5612650565b6123e057604051631afcd79f60e31b815260040160405180910390fd5b61239b6125cd565b6126038261266a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612648576117c282826126cf565b611009612745565b600061265a6123af565b54600160401b900460ff16919050565b806001600160a01b03163b6000036126a057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401612540565b6000805160206130f983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516126ec91906130dc565b600060405180830381855af49150503d8060008114612727576040519150601f19603f3d011682016040523d82523d6000602084013e61272c565b606091505b509150915061273c858383612764565b95945050505050565b34156123e05760405163b398979f60e01b815260040160405180910390fd5b60608261277957612774826127c3565b6127bc565b815115801561279057506001600160a01b0384163b155b156127b957604051639996b31560e01b81526001600160a01b0385166004820152602401612540565b50805b9392505050565b8051156127d35780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b0381168114610ba057600080fd5b6000806040838503121561281457600080fd5b823561281f816127ec565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561286b5761286b61282d565b604052919050565b60006001600160401b0382111561288c5761288c61282d565b5060051b60200190565b600082601f8301126128a757600080fd5b81356128ba6128b582612873565b612843565b8082825260208201915060208360051b8601019250858311156128dc57600080fd5b602085015b838110156128f95780358352602092830192016128e1565b5095945050505050565b8015158114610ba057600080fd5b600082601f83011261292257600080fd5b81356129306128b582612873565b8082825260208201915060208360051b86010192508583111561295257600080fd5b602085015b838110156128f957803561296a81612903565b835260209283019201612957565b600080600080600060a0868803121561299057600080fd5b85356001600160401b038111156129a657600080fd5b6129b288828901612896565b95505060208601356001600160401b038111156129ce57600080fd5b6129da88828901612896565b94505060408601356001600160401b038111156129f657600080fd5b612a0288828901612896565b93505060608601356001600160401b03811115612a1e57600080fd5b612a2a88828901612896565b92505060808601356001600160401b03811115612a4657600080fd5b612a5288828901612911565b9150509295509295909350565b600060208284031215612a7157600080fd5b81356127bc816127ec565b600060208284031215612a8e57600080fd5b81356001600160401b03811115612aa457600080fd5b612ab084828501612896565b949350505050565b600080600060608486031215612acd57600080fd5b833592506020840135612adf816127ec565b929592945050506040919091013590565b600060208284031215612b0257600080fd5b5035919050565b600082601f830112612b1a57600080fd5b8135612b286128b582612873565b8082825260208201915060208360051b860101925085831115612b4a57600080fd5b602085015b838110156128f9578035612b62816127ec565b835260209283019201612b4f565b600080600060608486031215612b8557600080fd5b8335612b90816127ec565b925060208401356001600160401b03811115612bab57600080fd5b612bb786828701612b09565b92505060408401356001600160401b03811115612bd357600080fd5b612bdf86828701612b09565b9150509250925092565b60008060408385031215612bfc57600080fd5b8235612c07816127ec565b915060208301356001600160401b03811115612c2257600080fd5b8301601f81018513612c3357600080fd5b80356001600160401b03811115612c4c57612c4c61282d565b612c5f601f8201601f1916602001612843565b818152866020838501011115612c7457600080fd5b816020840160208301376000602083830101528093505050509250929050565b60008060408385031215612ca757600080fd5b82356001600160401b03811115612cbd57600080fd5b612cc985828601612b09565b92505060208301356001600160401b03811115612ce557600080fd5b612cf185828601612896565b9150509250929050565b602080825282518282018190526000918401906040840190835b81811015612d355783511515835260209384019390920191600101612d15565b509095945050505050565b60008060408385031215612d5357600080fd5b50508035926020909101359150565b815181526020808301519082015260408083015115159082015260608101610743565b600080600060608486031215612d9a57600080fd5b83356001600160401b03811115612db057600080fd5b612dbc86828701612896565b9350506020840135612dcd816127ec565b915060408401356001600160401b03811115612de857600080fd5b612bdf86828701612896565b600080600060608486031215612e0957600080fd5b83356001600160401b03811115612e1f57600080fd5b612e2b86828701612896565b9350506020840135612adf816127ec565b60005b83811015612e57578181015183820152602001612e3f565b50506000910152565b6020815260008251806020840152612e7f816040850160208701612e3c565b601f01601f19169190910160400192915050565b600080600080600060a08688031215612eab57600080fd5b853594506020860135935060408601359250606086013591506080860135612ed281612903565b809150509295509295909350565b60008060408385031215612ef357600080fd5b8235612efe816127ec565b915060208301356001600160401b03811115612ce557600080fd5b602080825282518282018190526000918401906040840190835b81811015612d3557612f5c83855180518252602080820151908301526040908101511515910152565b6020939093019260609290920191600101612f33565b60008060408385031215612f8557600080fd5b82356001600160401b03811115612f9b57600080fd5b612cc985828601612896565b634e487b7160e01b600052601160045260246000fd5b8082018082111561074357610743612fa7565b600081612fdf57612fdf612fa7565b506000190190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561302f578151865260209586019590910190600101613011565b5093949350505050565b60408152600061304c6040830185612ffd565b90508260208301529392505050565b60006020828403121561306d57600080fd5b81516127bc816127ec565b60006020828403121561308a57600080fd5b81516127bc81612903565b6060815260006130a86060830186612ffd565b6001600160a01b039490941660208301525060400152919050565b6000602082840312156130d557600080fd5b5051919050565b600082516130ee818460208701612e3c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212207043ebe50d2f823d578fabcd8614db67c502c682548355c905b3820bed94d06064736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1CD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x76319190 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0x99EA24FE GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xB6F1D140 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xB6F1D140 EQ PUSH2 0x557 JUMPI DUP1 PUSH4 0xC3C12E69 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0xCAAE24B3 EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0xF1AA52F4 EQ PUSH2 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x99EA24FE EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x4CC JUMPI DUP1 PUSH4 0xB1B105FE EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0xB303F53F EQ PUSH2 0x52A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x86778641 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x86778641 EQ PUSH2 0x42A JUMPI DUP1 PUSH4 0x8D13660E EQ PUSH2 0x44A JUMPI DUP1 PUSH4 0x8F0FF11B EQ PUSH2 0x477 JUMPI DUP1 PUSH4 0x8FD3AB80 EQ PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x76319190 EQ PUSH2 0x3D5 JUMPI DUP1 PUSH4 0x773F2054 EQ PUSH2 0x3F5 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40033B3D GT PUSH2 0x16F JUMPI DUP1 PUSH4 0x52D1902D GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x35D JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x380 JUMPI DUP1 PUSH4 0x6D69FCAF EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0x70480275 EQ PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x40033B3D EQ PUSH2 0x2CA JUMPI DUP1 PUSH4 0x4A200FA5 EQ PUSH2 0x2FD JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0x529E2B32 EQ PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x21F06438 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0x21F06438 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x240028E8 EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x3428CEBB EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5059571 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0x9B952BE EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x1785F53C EQ PUSH2 0x229 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2801 JUMP JUMPDEST PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x222 CALLDATASIZE PUSH1 0x4 PUSH2 0x2978 JUMP JUMPDEST PUSH2 0x749 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A5F JUMP JUMPDEST PUSH2 0x979 JUMP JUMPDEST PUSH2 0x227 PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A7C JUMP JUMPDEST PUSH2 0xA14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x268 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x277 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A5F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x2B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AB8 JUMP JUMPDEST PUSH2 0xBA3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0xC58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x2E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF0 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x318 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B70 JUMP JUMPDEST PUSH2 0xCB8 JUMP JUMPDEST PUSH2 0x227 PUSH2 0x32B CALLDATASIZE PUSH1 0x4 PUSH2 0x2BE9 JUMP JUMPDEST PUSH2 0xFEE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x350 PUSH2 0x34B CALLDATASIZE PUSH1 0x4 PUSH2 0x2C94 JUMP JUMPDEST PUSH2 0x100D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2CFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x372 PUSH2 0x131A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x372 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A5F JUMP JUMPDEST PUSH2 0x1337 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x3D0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A5F JUMP JUMPDEST PUSH2 0x13DA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x3F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A5F JUMP JUMPDEST PUSH2 0x147B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x410 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D40 JUMP JUMPDEST PUSH2 0x151B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x159F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x445 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AB8 JUMP JUMPDEST PUSH2 0x1602 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x456 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46A PUSH2 0x465 CALLDATASIZE PUSH1 0x4 PUSH2 0x2801 JUMP JUMPDEST PUSH2 0x17C7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2D62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x492 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D85 JUMP JUMPDEST PUSH2 0x1840 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x19BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x4C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DF4 JUMP JUMPDEST PUSH2 0x1A14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2E60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x525 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E93 JUMP JUMPDEST PUSH2 0x1C69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x536 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x54A PUSH2 0x545 CALLDATASIZE PUSH1 0x4 PUSH2 0x2EE0 JUMP JUMPDEST PUSH2 0x1CFC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FE SWAP2 SWAP1 PUSH2 0x2F19 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x572 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AB8 JUMP JUMPDEST PUSH2 0x1E17 JUMP JUMPDEST PUSH2 0x227 PUSH2 0x585 CALLDATASIZE PUSH1 0x4 PUSH2 0x2AF0 JUMP JUMPDEST PUSH2 0x2012 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F2 PUSH2 0x5A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2801 JUMP JUMPDEST PUSH2 0x213B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x227 PUSH2 0x5C5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F72 JUMP JUMPDEST PUSH2 0x21D2 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x5FA JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0xFF AND ISZERO DUP1 PUSH2 0x633 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x651 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 SLOAD PUSH2 0x66F SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x68F JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x6A1 DUP4 PUSH2 0x2FD0 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CCC6C74B339E9D58B89AA6BB58D0519712AEFF106F7981D466F54572CB88B42 DUP4 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x6E6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x73D JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD DUP4 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH32 0x294E395C96EE31E4373F6B284B107E5341FFA80F2C53E582BC3CFB1F9EFE500E SWAP1 PUSH1 0x0 SWAP1 LOG3 JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x779 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 MLOAD DUP6 MLOAD EQ ISZERO DUP1 PUSH2 0x78C JUMPI POP DUP3 MLOAD DUP6 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x799 JUMPI POP DUP2 MLOAD DUP6 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x7A6 JUMPI POP DUP1 MLOAD DUP6 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x7C4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x971 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x7E2 JUMPI PUSH2 0x7E2 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x803 JUMPI PUSH2 0x803 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x832 JUMPI PUSH2 0x832 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x853 JUMPI PUSH2 0x853 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x882 JUMPI PUSH2 0x882 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x8A3 JUMPI PUSH2 0x8A3 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x8D2 JUMPI PUSH2 0x8D2 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP9 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x8F3 JUMPI PUSH2 0x8F3 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x935 JUMPI PUSH2 0x935 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH32 0xA7C3F5F04F0C05AD82FCDF81039DA5A01BF41CE2769B7B347AFA43BB65E44266 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x7C7 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x9A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x9CB JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xA3B62BC36326052D97EA62D63C3D60308ED4C3EA8AC079DD8499F1E9C4F80C0F SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH2 0xA1C PUSH2 0x22F4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA40 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xAEC JUMPI PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xA66 JUMPI PUSH2 0xA66 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH1 0xFF AND PUSH2 0xAA4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xABD JUMPI PUSH2 0xABD PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD DUP3 PUSH2 0xAE2 SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST SWAP2 POP PUSH1 0x1 ADD PUSH2 0xA44 JUMP JUMPDEST POP DUP1 CALLVALUE EQ PUSH2 0xB0D JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xB44 JUMPI PUSH2 0xB3C CALLER DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB2F JUMPI PUSH2 0xB2F PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x232C JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xB10 JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xAEC2D14270982470108E2C88FECCA013DBA6CAF4EDB3C8C7AC6D9DB8B26CB89F DUP4 CALLVALUE PUSH1 0x40 MLOAD PUSH2 0xB80 SWAP3 SWAP2 SWAP1 PUSH2 0x3039 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0xBA0 PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xBD3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xBFA JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD DUP4 DUP2 MSTORE DUP6 SWAP2 PUSH32 0x376716BD86293FF8B34061B9AF3CAC5116F15E0F2CBF689D822B6D6D7B1EECA9 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xC83 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA45F47FDEA8A1EFDD9029A5691C7F759C32B7C698632B563573E155625D16933 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCC2 PUSH2 0x23AF JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0xCE9 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xD05 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xD13 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xD31 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xD5B JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND PUSH2 0xD82 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xD8A PUSH2 0x23D8 JUMP JUMPDEST PUSH2 0xD92 PUSH2 0x23E2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND OR DUP2 SSTORE PUSH1 0x1 PUSH1 0x6 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0xEAB JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xDE3 JUMPI PUSH2 0xDE3 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xEA3 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x1 ADD PUSH1 0x0 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE14 JUMPI PUSH2 0xE14 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP8 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xE65 JUMPI PUSH2 0xE65 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x1 ADD PUSH2 0xDBD JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0xF9D JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xED5 JUMPI PUSH2 0xED5 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF95 JUMPI PUSH1 0x1 PUSH1 0x0 PUSH1 0x4 ADD PUSH1 0x0 DUP10 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xF06 JUMPI PUSH2 0xF06 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xF57 JUMPI PUSH2 0xF57 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD1BE2E90BD3D24839D9DD94AD871068E1F9688B02FA43F2A62C9975DFA9DE2D7 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMPDEST PUSH1 0x1 ADD PUSH2 0xEAF JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0xFE4 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFF6 PUSH2 0x23F2 JUMP JUMPDEST PUSH2 0xFFF DUP3 PUSH2 0x2497 JUMP JUMPDEST PUSH2 0x1009 DUP3 DUP3 PUSH2 0x24C2 JUMP JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x1040 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x1062 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x107D JUMPI PUSH2 0x107D PUSH2 0x282D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x10A6 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1312 JUMPI PUSH1 0x0 DUP1 PUSH1 0x3 ADD PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x10CF JUMPI PUSH2 0x10CF PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x110B JUMPI PUSH2 0x110B PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO DUP1 PUSH2 0x1143 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x1172 JUMPI PUSH1 0x0 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x115C JUMPI PUSH2 0x115C PUSH2 0x2FE7 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP PUSH2 0x130A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x118B JUMPI PUSH2 0x118B PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 PUSH1 0x0 ADD SLOAD PUSH2 0x11B4 SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x11CF JUMPI PUSH1 0x0 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x115C JUMPI PUSH2 0x115C PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x11E1 DUP4 PUSH2 0x2FD0 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x11F8 JUMPI PUSH2 0x11F8 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1212 JUMPI PUSH2 0x1212 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2CCC6C74B339E9D58B89AA6BB58D0519712AEFF106F7981D466F54572CB88B42 DUP4 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x1258 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0x1 ADD SLOAD PUSH1 0x0 SUB PUSH2 0x12E4 JUMPI PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE DUP5 MLOAD DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x128C JUMPI PUSH2 0x128C PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x12A6 JUMPI PUSH2 0x12A6 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x294E395C96EE31E4373F6B284B107E5341FFA80F2C53E582BC3CFB1F9EFE500E PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST PUSH1 0x1 DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x12F8 JUMPI PUSH2 0x12F8 PUSH2 0x2FE7 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x10AC JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1324 PUSH2 0x2584 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30F9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1367 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x138E JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0xD1BE2E90BD3D24839D9DD94AD871068E1F9688B02FA43F2A62C9975DFA9DE2D7 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1405 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x142C JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE MLOAD PUSH32 0x44D6D25963F097AD14F29F06854A01F575648A1EF82F30E562CCD3889717E339 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x14AB JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x14D2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD PUSH32 0xBEA12876694C4055C71F74308F752B9027CF3D554194000A366ABDDFC239A306 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x154B JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP3 SWAP1 SSTORE MLOAD DUP3 SWAP1 PUSH32 0x40175EBA104D8383C936EC96A9DA297986B13A86E5B2A19296171B11533E59CE SWAP1 PUSH2 0x1593 SWAP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x15CA JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x9E87FAC88FF661F02D44F95383C817FECE4BCE600A3DAB7A54406878B965E752 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x160A PUSH2 0x22F4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x162E JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD DUP4 SWAP1 PUSH1 0xFF AND PUSH2 0x1662 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x16A9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16CD SWAP2 SWAP1 PUSH2 0x305B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x16F4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCD7A1B5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1742 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1756 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1764 CALLER DUP6 PUSH2 0x232C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP6 SWAP2 CALLER SWAP2 PUSH32 0xD0DE3E759B6D8AE4AB8DFD56F0869B691034BF2F14B896155287E5CD61D66A70 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x17C2 PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x17ED PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x60 DUP2 ADD DUP5 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1870 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP4 MLOAD EQ PUSH2 0x1892 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x18B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x19B6 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x18D7 JUMPI PUSH2 0x18D7 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x18F8 JUMPI PUSH2 0x18F8 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1954 JUMPI PUSH2 0x1954 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH32 0x376716BD86293FF8B34061B9AF3CAC5116F15E0F2CBF689D822B6D6D7B1EECA9 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x198F JUMPI PUSH2 0x198F PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x19A6 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 ADD PUSH2 0x18BC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x19E7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD ADDRESS SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 JUMP JUMPDEST PUSH2 0x1A1C PUSH2 0x22F4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1A40 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1A79 JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1B48 JUMPI PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1A9F JUMPI PUSH2 0x1A9F PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH1 0xFF AND PUSH2 0x1ADD JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1AF6 JUMPI PUSH2 0x1AF6 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 PUSH2 0x1B3E SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST SWAP2 POP PUSH1 0x1 ADD PUSH2 0x1A7D JUMP JUMPDEST POP DUP1 DUP3 EQ PUSH2 0x1B69 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BBC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BE0 SWAP2 SWAP1 PUSH2 0x3078 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x1C0B JUMPI PUSH2 0x1C03 CALLER DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB2F JUMPI PUSH2 0xB2F PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1BE4 JUMP JUMPDEST POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x2BE07A645F06BFA8B189B4F0ABA9BF2109D098D03CBEDE0449641495BBA5D53D DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1C49 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3095 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x17C2 PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1C99 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD DUP9 SWAP1 SSTORE SWAP2 DUP3 ADD DUP7 SWAP1 SSTORE PUSH1 0x3 DUP3 ADD DUP6 SWAP1 SSTORE PUSH1 0x4 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO OR SWAP1 SSTORE MLOAD DUP7 SWAP2 PUSH32 0xA7C3F5F04F0C05AD82FCDF81039DA5A01BF41CE2769B7B347AFA43BB65E44266 SWAP2 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1D19 JUMPI PUSH2 0x1D19 PUSH2 0x282D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1D70 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1D5D PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1D37 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x1312 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP6 MLOAD SWAP1 SWAP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH2 0x1DAE JUMPI PUSH2 0x1DAE PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO SWAP1 DUP3 ADD MSTORE DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1E04 JUMPI PUSH2 0x1E04 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1D76 JUMP JUMPDEST PUSH2 0x1E1F PUSH2 0x22F4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1E43 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD DUP4 SWAP1 PUSH1 0xFF AND PUSH2 0x1E77 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1EB0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x350B9441 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 EQ PUSH2 0x1EF2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F69 SWAP2 SWAP1 PUSH2 0x3078 JUMP JUMPDEST POP PUSH2 0x1F74 CALLER DUP6 PUSH2 0x232C JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0x1F90 SWAP1 TIMESTAMP PUSH2 0x2FBD JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 SWAP1 SWAP2 ADD SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP2 MSTORE SWAP2 DUP3 ADD DUP8 SWAP1 MSTORE DUP2 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP DUP7 SWAP2 CALLER SWAP2 PUSH32 0x180FE4B156A592A405CDD866F58883063DB683348215E97CF864D6BF9679261C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG3 POP POP PUSH2 0x17C2 PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH2 0x201A PUSH2 0x22F4 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x203E JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB35696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x2072 JUMPI PUSH1 0x40 MLOAD PUSH4 0xAB4142CF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD CALLVALUE EQ PUSH2 0x20A3 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCD1C8867 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x20AD CALLER DUP4 PUSH2 0x232C JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0x20C9 SWAP1 TIMESTAMP PUSH2 0x2FBD JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 SWAP1 SWAP2 ADD SLOAD DUP3 MLOAD CALLVALUE DUP2 MSTORE SWAP2 DUP3 ADD MSTORE SWAP1 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 SWAP2 POP DUP4 SWAP1 CALLER SWAP1 PUSH32 0x8C61C0751C0E925B40E7A528992E1413A937C058AC7EAFD0C61F75ABD3A8225D SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH2 0xBA0 PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x2 ADD SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 PUSH2 0x2194 JUMPI POP PUSH1 0x20 DUP2 ADD MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x21A3 JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x743 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 MLOAD PUSH2 0x21C1 SWAP2 SWAP1 PUSH2 0x2FBD JUMP JUMPDEST TIMESTAMP GT ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 SWAP2 POP POP PUSH2 0x743 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x2202 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7BFA4B9F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x2224 JUMPI PUSH1 0x40 MLOAD PUSH4 0x512509D3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x17C2 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2242 JUMPI PUSH2 0x2242 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH1 0x2 ADD PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2263 JUMPI PUSH2 0x2263 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2292 JUMPI PUSH2 0x2292 PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH32 0x40175EBA104D8383C936EC96A9DA297986B13A86E5B2A19296171B11533E59CE DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x22CD JUMPI PUSH2 0x22CD PUSH2 0x2FE7 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x22E4 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 ADD PUSH2 0x2227 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 NOT ADD PUSH2 0x2326 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE TIMESTAMP DUP2 MSTORE PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE DUP5 DUP4 KECCAK256 DUP3 ADD SLOAD DUP2 DUP6 ADD SWAP1 DUP2 MSTORE PUSH1 0x1 DUP6 DUP8 ADD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 SWAP1 SWAP10 AND DUP6 MSTORE PUSH1 0x3 DUP4 MSTORE DUP7 DUP6 KECCAK256 SWAP8 DUP6 MSTORE SWAP7 SWAP1 SWAP2 MSTORE SWAP4 SWAP1 SWAP2 KECCAK256 SWAP2 MLOAD DUP3 SSTORE SWAP2 MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 MLOAD SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3119 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 PUSH2 0x743 JUMP JUMPDEST PUSH2 0x23E0 PUSH2 0x25CD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x23EA PUSH2 0x25CD JUMP JUMPDEST PUSH2 0x23E0 PUSH2 0x25F2 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2479 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x246D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30F9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x23E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xBA0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CD7471 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x251C JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2519 SWAP2 DUP2 ADD SWAP1 PUSH2 0x30C3 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2549 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30F9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x257A JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x2540 JUMP JUMPDEST PUSH2 0x17C2 DUP4 DUP4 PUSH2 0x25FA JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x23E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x25D5 PUSH2 0x2650 JUMP JUMPDEST PUSH2 0x23E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x239B PUSH2 0x25CD JUMP JUMPDEST PUSH2 0x2603 DUP3 PUSH2 0x266A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x2648 JUMPI PUSH2 0x17C2 DUP3 DUP3 PUSH2 0x26CF JUMP JUMPDEST PUSH2 0x1009 PUSH2 0x2745 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265A PUSH2 0x23AF JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x26A0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2540 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x30F9 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x26EC SWAP2 SWAP1 PUSH2 0x30DC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2727 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x272C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x273C DUP6 DUP4 DUP4 PUSH2 0x2764 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x23E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x2779 JUMPI PUSH2 0x2774 DUP3 PUSH2 0x27C3 JUMP JUMPDEST PUSH2 0x27BC JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2790 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x27B9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2540 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x27D3 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2814 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x281F DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x286B JUMPI PUSH2 0x286B PUSH2 0x282D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x288C JUMPI PUSH2 0x288C PUSH2 0x282D JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x28BA PUSH2 0x28B5 DUP3 PUSH2 0x2873 JUMP JUMPDEST PUSH2 0x2843 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x28DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28F9 JUMPI DUP1 CALLDATALOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x28E1 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2922 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2930 PUSH2 0x28B5 DUP3 PUSH2 0x2873 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x2952 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28F9 JUMPI DUP1 CALLDATALOAD PUSH2 0x296A DUP2 PUSH2 0x2903 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2957 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2990 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x29A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x29B2 DUP9 DUP3 DUP10 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x29CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x29DA DUP9 DUP3 DUP10 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x29F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A02 DUP9 DUP3 DUP10 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2A1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A2A DUP9 DUP3 DUP10 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2A46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A52 DUP9 DUP3 DUP10 ADD PUSH2 0x2911 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x27BC DUP2 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2AA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2AB0 DUP5 DUP3 DUP6 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2ACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2ADF DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B28 PUSH2 0x28B5 DUP3 PUSH2 0x2873 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP4 PUSH1 0x5 SHL DUP7 ADD ADD SWAP3 POP DUP6 DUP4 GT ISZERO PUSH2 0x2B4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP6 ADD JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28F9 JUMPI DUP1 CALLDATALOAD PUSH2 0x2B62 DUP2 PUSH2 0x27EC JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 ADD PUSH2 0x2B4F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2B85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2B90 DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BB7 DUP7 DUP3 DUP8 ADD PUSH2 0x2B09 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2BD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BDF DUP7 DUP3 DUP8 ADD PUSH2 0x2B09 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2C07 DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x2C33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2C4C JUMPI PUSH2 0x2C4C PUSH2 0x282D JUMP JUMPDEST PUSH2 0x2C5F PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x2843 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP7 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x2C74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2CA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CC9 DUP6 DUP3 DUP7 ADD PUSH2 0x2B09 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CF1 DUP6 DUP3 DUP7 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D35 JUMPI DUP4 MLOAD ISZERO ISZERO DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2D15 JUMP JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD ISZERO ISZERO SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD PUSH2 0x743 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2D9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2DB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2DBC DUP7 DUP3 DUP8 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2DCD DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2DE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2BDF DUP7 DUP3 DUP8 ADD PUSH2 0x2896 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2E09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2E1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E2B DUP7 DUP3 DUP8 ADD PUSH2 0x2896 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2ADF DUP2 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E57 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E3F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2E7F DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2E3C JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2EAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x2ED2 DUP2 PUSH2 0x2903 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2EF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2EFE DUP2 PUSH2 0x27EC JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 DUP5 ADD SWAP1 PUSH1 0x40 DUP5 ADD SWAP1 DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2D35 JUMPI PUSH2 0x2F5C DUP4 DUP6 MLOAD DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD ISZERO ISZERO SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2F33 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2F9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CC9 DUP6 DUP3 DUP7 ADD PUSH2 0x2896 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x743 JUMPI PUSH2 0x743 PUSH2 0x2FA7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x2FDF JUMPI PUSH2 0x2FDF PUSH2 0x2FA7 JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x302F JUMPI DUP2 MLOAD DUP7 MSTORE PUSH1 0x20 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3011 JUMP JUMPDEST POP SWAP4 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x304C PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2FFD JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x306D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x27BC DUP2 PUSH2 0x27EC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x308A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x27BC DUP2 PUSH2 0x2903 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x30A8 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x2FFD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x30EE DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2E3C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC9B779B17422D0DF9222301 DUP12 ORIGIN 0xB4 0xD1 STATICCALL CHAINID 0xE0 PUSH18 0x723D6817E2486D003BECC55F00A264697066 PUSH20 0x582212207043EBE50D2F823D578FABCD8614DB67 0xC5 MUL 0xC6 DUP3 SLOAD DUP4 SSTORE 0xC9 SDIV 0xB3 DUP3 SIGNEXTEND 0xED SWAP5 0xD0 PUSH1 0x64 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"658:19683:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17374:967;;;;;;;;;;-1:-1:-1;17374:967:20;;;;;:::i;:::-;;:::i;:::-;;;687:14:24;;680:22;662:41;;650:2;635:18;17374:967:20;;;;;;;;5228:1097;;;;;;;;;;-1:-1:-1;5228:1097:20;;;;;:::i;:::-;;:::i;:::-;;3841:192;;;;;;;;;;-1:-1:-1;3841:192:20;;;;;:::i;:::-;;:::i;13165:748::-;;;;;;:::i;:::-;;:::i;9657:125::-;;;;;;;;;;-1:-1:-1;9657:125:20;;;;;:::i;:::-;-1:-1:-1;;;;;9744:31:20;9721:4;9744:31;;;:24;:31;;;;;;;;;9657:125;6827:314;;;;;;;;;;-1:-1:-1;6827:314:20;;;;;:::i;:::-;;:::i;20236:103::-;;;;;;;;;;;;;:::i;6462:140::-;;;;;;;;;;-1:-1:-1;6462:140:20;;;;;:::i;:::-;6529:4;6552:34;;;:23;:34;;;;;:43;;;;;;6462:140;1787:1025;;;;;;;;;;-1:-1:-1;1787:1025:20;;;;;:::i;:::-;;:::i;4161:214:1:-;;;;;;:::i;:::-;;:::i;18531:1445:20:-;;;;;;;;;;-1:-1:-1;18531:1445:20;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3708:134:1:-;;;;;;;;;;;;;:::i;:::-;;;9304:25:24;;;9292:2;9277:18;3708:134:1;9158:177:24;2867:91:20;;;;;;;;;;-1:-1:-1;2935:16:20;;2867:91;;8979:212;;;;;;;;;;-1:-1:-1;8979:212:20;;;;;:::i;:::-;;:::i;3564:186::-;;;;;;;;;;-1:-1:-1;3564:186:20;;;;;:::i;:::-;;:::i;9292:218::-;;;;;;;;;;-1:-1:-1;9292:218:20;;;;;:::i;:::-;;:::i;8008:224::-;;;;;;;;;;-1:-1:-1;8008:224:20;;;;;:::i;:::-;;:::i;20087:98::-;;;;;;;;;;;;;:::i;14090:646::-;;;;;;;;;;-1:-1:-1;14090:646:20;;;;;:::i;:::-;;:::i;17001:216::-;;;;;;;;;;-1:-1:-1;17001:216:20;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7332:540::-;;;;;;;;;;-1:-1:-1;7332:540:20;;;;;:::i;:::-;;:::i;3031:207::-;;;;;;;;;;;;;:::i;11965:1084::-;;;;;;;;;;-1:-1:-1;11965:1084:20;;;;;:::i;:::-;;:::i;1819:58:1:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:1;;;;;;;;;;;;:::i;4386:534:20:-;;;;;;;;;;-1:-1:-1;4386:534:20;;;;;:::i;:::-;;:::i;16326:511::-;;;;;;;;;;-1:-1:-1;16326:511:20;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10023:957::-;;;;;;;;;;-1:-1:-1;10023:957:20;;;;;:::i;:::-;;:::i;11083:670::-;;;;;;:::i;:::-;;:::i;15541:602::-;;;;;;;;;;-1:-1:-1;15541:602:20;;;;;:::i;:::-;;:::i;8395:420::-;;;;;;;;;;-1:-1:-1;8395:420:20;;;;;:::i;:::-;;:::i;17374:967::-;1121:10;17478:4;1104:28;;;:16;:28;;;;;;;;1099:52;;1141:10;;-1:-1:-1;;;1141:10:20;;;;;;;;;;;1099:52;-1:-1:-1;;;;;17550:43:20;::::1;17494:53;17550:43:::0;;;:37:::1;:43;::::0;;;;;;;:54;;;;;;;;17620:18:::1;::::0;::::1;::::0;::::1;;17619:19;::::0;:53:::1;;-1:-1:-1::0;17642:25:20::1;::::0;::::1;::::0;:30;17619:53:::1;17615:110;;;17695:19;;-1:-1:-1::0;;;17695:19:20::1;;;;;;;;;;;17615:110;17867:8;:34:::0;;;:23:::1;:34;::::0;;;;:47:::1;;::::0;17825:23;;:89:::1;::::0;17867:47;17825:89:::1;:::i;:::-;17795:15;:119;17778:198;;;17946:19;;-1:-1:-1::0;;;17946:19:20::1;;;;;;;;;;;17778:198;18014:25;::::0;::::1;:27:::0;;;:25:::1;:27;::::0;::::1;:::i;:::-;;;;;;18076:9;18070:4;-1:-1:-1::0;;;;;18057:56:20::1;;18087:10;:25;;;18057:56;;;;9304:25:24::0;;9292:2;9277:18;;9158:177;18057:56:20::1;;;;;;;;18177:10;:25;;;18206:1;18177:30:::0;18173:140:::1;;18223:18;::::0;::::1;:26:::0;;-1:-1:-1;;18223:26:20::1;::::0;;18268:34:::1;::::0;18292:9;;-1:-1:-1;;;;;18268:34:20;::::1;::::0;::::1;::::0;18244:5:::1;::::0;18268:34:::1;18173:140;18330:4;18323:11;;;1161:1;17374:967:::0;;;;:::o;5228:1097::-;1121:10;1104:8;:28;;;:16;:28;;;;;;;;1099:52;;1141:10;;-1:-1:-1;;;1141:10:20;;;;;;;;;;;1099:52;5529:12:::1;:19;5508:10;:17;:40;;:101;;;;5585:17;:24;5564:10;:17;:45;;5508:101;:158;;;;5646:13;:20;5625:10;:17;:41;;5508:158;:215;;;;5703:13;:20;5682:10;:17;:41;;5508:215;5491:271;;;5741:21;;-1:-1:-1::0;;;5741:21:20::1;;;;;;;;;;;5491:271;5778:9;5773:546;5797:10;:17;5793:1;:21;5773:546;;;5888:12;5918:1;5888:45;;;;;;;;:::i;:::-;;;;;;;5835:8;:23;;:38;5859:10;5870:1;5859:13;;;;;;;;:::i;:::-;;;;;;;5835:38;;;;;;;;;;;:50;;:98;;;;6039:17;6057:1;6039:20;;;;;;;;:::i;:::-;;;;;;;5947:8;:40;;:55;5988:10;5999:1;5988:13;;;;;;;;:::i;:::-;;;;;;;5947:55;;;;;;;;;;;:89;;:112;;;;6127:13;6158:1;6127:46;;;;;;;;:::i;:::-;;;;;;;6073:8;:23;;:38;6097:10;6108:1;6097:13;;;;;;;;:::i;:::-;;;;;;;6073:38;;;;;;;;;;;:51;;:100;;;;6237:13;6251:1;6237:16;;;;;;;;:::i;:::-;;;;;;;6187:8;:23;;:38;6211:10;6222:1;6211:13;;;;;;;;:::i;:::-;;;;;;;6187:38;;;;;;;;;;;:47;;;:66;;;;;;;;;;;;;;;;;;6294:10;6305:1;6294:13;;;;;;;;:::i;:::-;;;;;;;6273:35;;;;;;;;;;5816:3;;5773:546;;;;5228:1097:::0;;;;;:::o;3841:192::-;1011:8;:14;-1:-1:-1;;;;;1011:14:20;997:10;:28;993:51;;1034:10;;-1:-1:-1;;;1034:10:20;;;;;;;;;;;993:51;-1:-1:-1;;;;;3910:19:20;::::1;3906:45;;3938:13;;-1:-1:-1::0;;;3938:13:20::1;;;;;;;;;;;3906:45;-1:-1:-1::0;;;;;3961:23:20;::::1;3987:5;3961:23:::0;;;:16:::1;:23;::::0;;;;;:31;;-1:-1:-1;;3961:31:20::1;::::0;;4007:19;::::1;::::0;3987:5;4007:19:::1;3841:192:::0;:::o;13165:748::-;3395:21:2;:19;:21::i;:::-;1214:15:20::1;::::0;::::1;;1210:44;;;1238:16;;-1:-1:-1::0;;;1238:16:20::1;;;;;;;;;;;1210:44;13295:21:::2;13335:9:::0;13330:247:::2;13354:10;:17;13350:1;:21;13330:247;;;13397:8;:23;;:38;13421:10;13432:1;13421:13;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;;13397:38;;;::::2;::::0;;;;;;-1:-1:-1;13397:38:20;:47:::2;;::::0;::::2;;13392:93;;13469:16;;-1:-1:-1::0;;;13469:16:20::2;;;;;;;;;;;13392:93;13516:8;:23;;:38;13540:10;13551:1;13540:13;;;;;;;;:::i;:::-;;;;;;;13516:38;;;;;;;;;;;:50;;;13499:67;;;;;:::i;:::-;::::0;-1:-1:-1;13373:3:20::2;;13330:247;;;;13604:13;13591:9;:26;13587:60;;13626:21;;-1:-1:-1::0;;;13626:21:20::2;;;;;;;;;;;13587:60;13698:9;13693:121;13717:10;:17;13713:1;:21;13693:121;;;13755:48;13777:10;13789;13800:1;13789:13;;;;;;;;:::i;:::-;;;;;;;13755:21;:48::i;:::-;13736:3;;13693:121;;;;13872:10;-1:-1:-1::0;;;;;13851:55:20::2;;13884:10;13896:9;13851:55;;;;;;;:::i;:::-;;;;;;;;13285:628;3437:20:2::0;1949:1;-1:-1:-1;;;;;;;;;;;4113:23:2;3860:283;3437:20;13165:748:20;:::o;6827:314::-;1121:10;1104:8;:28;;;:16;:28;;;;;;;;1099:52;;1141:10;;-1:-1:-1;;;1141:10:20;;;;;;;;;;;1099:52;-1:-1:-1;;;;;6965:19:20;::::1;6961:45;;6993:13;;-1:-1:-1::0;;;6993:13:20::1;;;;;;;;;;;6961:45;7016:8;:34:::0;;;:23:::1;:34;::::0;;;;;;;-1:-1:-1;;;;;7016:53:20;::::1;::::0;;;;;;;;;;:61;;;7092:42;9304:25:24;;;7016:34:20;;7092:42:::1;::::0;9277:18:24;7092:42:20::1;;;;;;;6827:314:::0;;;:::o;20236:103::-;1011:8;:14;-1:-1:-1;;;;;1011:14:20;997:10;:28;993:51;;1034:10;;-1:-1:-1;;;1034:10:20;;;;;;;;;;;993:51;20284:15:::1;:23:::0;;-1:-1:-1;;20284:23:20::1;::::0;;20322:10:::1;::::0;::::1;::::0;20302:5:::1;::::0;20322:10:::1;20236:103::o:0;1787:1025::-;4158:30:0;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:0;-1:-1:-1;;;4302:15:0;;;4301:16;;-1:-1:-1;;;;;4348:14:0;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;-1:-1:-1;;;;;4788:16:0;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:0;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;-1:-1:-1;;;4906:23:0;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:0;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;;;5011:22:0;-1:-1:-1;;;5011:22:0;;;4977:67;-1:-1:-1;;;;;1966:26:20;::::1;1962:52;;2001:13;;-1:-1:-1::0;;;2001:13:20::1;;;;;;;;;;;1962:52;2025:24;:22;:24::i;:::-;2059;:22;:24::i;:::-;2094:8;:29:::0;;-1:-1:-1;;;;;;2094:29:20::1;-1:-1:-1::0;;;;;2094:29:20;::::1;;::::0;;-1:-1:-1;2133:16:20::1;:20:::0;2163:15:::1;:23:::0;;-1:-1:-1;;2163:23:20::1;::::0;;2227:236:::1;2251:13;:20;2247:1;:24;2227:236;;;2324:1;-1:-1:-1::0;;;;;2296:30:20::1;:13;2310:1;2296:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;2296:30:20::1;;2292:161;;2383:4;2346:8;:16;;:34;2363:13;2377:1;2363:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;2346:34:20::1;-1:-1:-1::0;;;;;2346:34:20::1;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;2421:13;2435:1;2421:16;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;2410:28:20::1;;;;;;;;;;;2292:161;2273:3;;2227:236;;;;2518:9;2513:293;2537:23;:30;2533:1;:34;2513:293;;;2630:1;-1:-1:-1::0;;;;;2592:40:20::1;:23;2616:1;2592:26;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;2592:40:20::1;;2588:208;;2707:4;2652:8;:24;;:52;2677:23;2701:1;2677:26;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;2652:52:20::1;-1:-1:-1::0;;;;;2652:52:20::1;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;2754:23;2778:1;2754:26;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;2734:47:20::1;;;;;;;;;;;2588:208;2569:3;;2513:293;;;;5068:14:0::0;5064:101;;;5098:23;;-1:-1:-1;;;;5098:23:0;;;5140:14;;-1:-1:-1;16340:50:24;;5140:14:0;;16328:2:24;16313:18;5140:14:0;;;;;;;5064:101;4092:1079;;;;;1787:1025:20;;;:::o;4161:214:1:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;18531:1445:20:-;1121:10;1104:8;:28;;;:16;:28;;;;;;18660:13;;1104:28;;1099:52;;1141:10;;-1:-1:-1;;;1141:10:20;;;;;;;;;;;1099:52;18705:10:::1;:17;18689:5;:12;:33;18685:67;;18731:21;;-1:-1:-1::0;;;18731:21:20::1;;;;;;;;;;;18685:67;18763:21;18798:5;:12;-1:-1:-1::0;;;;;18787:24:20::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;18787:24:20::1;;18763:48;;18827:9;18822:1123;18846:5;:12;18842:1;:16;18822:1123;;;18879:53;18935:8:::0;:41:::1;;:51;18977:5;18983:1;18977:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;18935:51:20::1;-1:-1:-1::0;;;;;18935:51:20::1;;;;;;;;;;;;:66;18987:10;18998:1;18987:13;;;;;;;;:::i;:::-;;;;;;;18935:66;;;;;;;;;;;18879:122;;19021:10;:18;;;;;;;;;;;;19020:19;:53;;;-1:-1:-1::0;19043:25:20::1;::::0;::::1;::::0;:30;19020:53:::1;19016:136;;;19106:5;19093:7;19101:1;19093:10;;;;;;;;:::i;:::-;:18:::0;::::1;;:10;::::0;;::::1;::::0;;;;;;;:18;-1:-1:-1;19129:8:20::1;;19016:136;19314:8;:23;;:38;19338:10;19349:1;19338:13;;;;;;;;:::i;:::-;;;;;;;19314:38;;;;;;;;;;;:51;;;19268:10;:23;;;:97;;;;:::i;:::-;19234:15;:131;19213:244;;;19411:5;19398:7;19406:1;19398:10;;;;;;;;:::i;19213:244::-;19503:25;::::0;::::1;:27:::0;;;:25:::1;:27;::::0;::::1;:::i;:::-;;;;;;19605:10;19616:1;19605:13;;;;;;;;:::i;:::-;;;;;;;19579:5;19585:1;19579:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;19549:126:20::1;;19636:10;:25;;;19549:126;;;;9304:25:24::0;;9292:2;9277:18;;9158:177;19549:126:20::1;;;;;;;;19747:10;:25;;;19776:1;19747:30:::0;19743:160:::1;;19797:18;::::0;::::1;:26:::0;;-1:-1:-1;;19797:26:20::1;::::0;;19874:13;;:10;;19885:1;;19874:13;::::1;;;;;:::i;:::-;;;;;;;19864:5;19870:1;19864:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;19846:42:20::1;;;;;;;;;;;19743:160;19930:4;19917:7;19925:1;19917:10;;;;;;;;:::i;:::-;:17:::0;::::1;;:10;::::0;;::::1;::::0;;;;;;;:17;-1:-1:-1;18822:1123:20::1;18860:3;;18822:1123;;;-1:-1:-1::0;19962:7:20;18531:1445;-1:-1:-1;;;18531:1445:20:o;3708:134:1:-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:1;:::o;8979:212:20:-;1121:10;1104:8;:28;;;:16;:28;;;;;;;;1099:52;;1141:10;;-1:-1:-1;;;1141:10:20;;;;;;;;;;;1099:52;-1:-1:-1;;;;;9054:19:20;::::1;9050:45;;9082:13;;-1:-1:-1::0;;;9082:13:20::1;;;;;;;;;;;9050:45;-1:-1:-1::0;;;;;9105:31:20;::::1;:8;:31:::0;;;:24:::1;:31;::::0;;;;;:38;;-1:-1:-1;;9105:38:20::1;9139:4;9105:38;::::0;;9158:26;::::1;::::0;9105:8;9158:26:::1;8979:212:::0;:::o;3564:186::-;1011:8;:14;-1:-1:-1;;;;;1011:14:20;997:10;:28;993:51;;1034:10;;-1:-1:-1;;;1034:10:20;;;;;;;;;;;993:51;-1:-1:-1;;;;;3630:19:20;::::1;3626:45;;3658:13;;-1:-1:-1::0;;;3658:13:20::1;;;;;;;;;;;3626:45;-1:-1:-1::0;;;;;3681:23:20;::::1;:8;:23:::0;;;3707:4:::1;3681:23;::::0;;;;;;;:30;;-1:-1:-1;;3681:30:20::1;::::0;;::::1;::::0;;;3726:17;::::1;::::0;3681:8;3726:17:::1;3564:186:::0;:::o;9292:218::-;1121:10;1104:8;:28;;;:16;:28;;;;;;;;1099:52;;1141:10;;-1:-1:-1;;;1141:10:20;;;;;;;;;;;1099:52;-1:-1:-1;;;;;9370:19:20;::::1;9366:45;;9398:13;;-1:-1:-1::0;;;9398:13:20::1;;;;;;;;;;;9366:45;-1:-1:-1::0;;;;;9421:31:20;::::1;9455:5;9421:31:::0;;;:24:::1;:31;::::0;;;;;:39;;-1:-1:-1;;9421:39:20::1;::::0;;9475:28;::::1;::::0;9455:5;9475:28:::1;9292:218:::0;:::o;8008:224::-;1121:10;1104:8;:28;;;:16;:28;;;;;;;;1099:52;;1141:10;;-1:-1:-1;;;1141:10:20;;;;;;;;;;;1099:52;8120:8:::1;:34:::0;;;:23:::1;:34;::::0;;;;;;:46:::1;;:54:::0;;;8189:36;8144:9;;8189:36:::1;::::0;::::1;::::0;8169:5;9304:25:24;;9292:2;9277:18;;9158:177;8189:36:20::1;;;;;;;;8008:224:::0;;:::o;20087:98::-;1011:8;:14;-1:-1:-1;;;;;1011:14:20;997:10;:28;993:51;;1034:10;;-1:-1:-1;;;1034:10:20;;;;;;;;;;;993:51;20133:15:::1;:22:::0;;-1:-1:-1;;20133:22:20::1;20151:4;20133:22;::::0;;20170:8:::1;::::0;::::1;::::0;20133::::1;::::0;20170::::1;20087:98::o:0;14090:646::-;3395:21:2;:19;:21::i;:::-;1214:15:20::1;::::0;::::1;;1210:44;;;1238:16;;-1:-1:-1::0;;;1238:16:20::1;;;;;;;;;;;1210:44;1334:8:::2;:34:::0;;;:23:::2;:34;::::0;;;;:43:::2;;::::0;14251:9;;1334:43:::2;;1329:85;;1398:16;;-1:-1:-1::0;;;1398:16:20::2;;;;;;;;;;;1329:85;14307:37:::3;::::0;-1:-1:-1;;;14307:37:20;;::::3;::::0;::::3;9304:25:24::0;;;14348:10:20::3;::::0;-1:-1:-1;;;;;14307:28:20;::::3;::::0;::::3;::::0;9277:18:24;;14307:37:20::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14307:51:20::3;;14303:95;;14379:19;;-1:-1:-1::0;;;14379:19:20::3;;;;;;;;;;;14303:95;14476:69;::::0;-1:-1:-1;;;14476:69:20;;14510:10:::3;14476:69;::::0;::::3;16859:51:24::0;14530:4:20::3;16926:18:24::0;;;16919:60;16995:18;;;16988:34;;;-1:-1:-1;;;;;14476:33:20;::::3;::::0;::::3;::::0;16832:18:24;;14476:69:20::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;14590:44;14612:10;14624:9;14590:21;:44::i;:::-;14672:57;::::0;;-1:-1:-1;;;;;17225:32:24;;17207:51;;17289:2;17274:18;;17267:34;;;14697:9:20;;14685:10:::3;::::0;14672:57:::3;::::0;17180:18:24;14672:57:20::3;;;;;;;1264:1:::2;3437:20:2::0;1949:1;-1:-1:-1;;;;;;;;;;;4113:23:2;3860:283;3437:20;14090:646:20;;;:::o;17001:216::-;17109:41;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;17109:41:20;-1:-1:-1;;;;;;17169:30:20;;:8;:30;;;:24;:30;;;;;;;;:41;;;;;;;;;17162:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17001:216;;;;:::o;7332:540::-;1121:10;1104:8;:28;;;:16;:28;;;;;;;;1099:52;;1141:10;;-1:-1:-1;;;1141:10:20;;;;;;;;;;;1099:52;7516:6:::1;:13;7495:10;:17;:34;7491:68;;7538:21;;-1:-1:-1::0;;;7538:21:20::1;;;;;;;;;;;7491:68;-1:-1:-1::0;;;;;7573:19:20;::::1;7569:45;;7601:13;;-1:-1:-1::0;;;7601:13:20::1;;;;;;;;;;;7569:45;7630:9;7625:241;7649:10;:17;7645:1;:21;7625:241;;;7747:6;7771:1;7747:39;;;;;;;;:::i;:::-;;;;;;;7687:8;:23;;:38;7711:10;7722:1;7711:13;;;;;;;;:::i;:::-;;;;;;;7687:38;;;;;;;;;;;:50;;:57;7738:5;-1:-1:-1::0;;;;;7687:57:20::1;-1:-1:-1::0;;;;;7687:57:20::1;;;;;;;;;;;;:99;;;;7838:5;-1:-1:-1::0;;;;;7805:50:20::1;7823:10;7834:1;7823:13;;;;;;;;:::i;:::-;;;;;;;7805:50;7845:6;7852:1;7845:9;;;;;;;;:::i;:::-;;;;;;;7805:50;;;;9304:25:24::0;;9292:2;9277:18;;9158:177;7805:50:20::1;;;;;;;;7668:3;;7625:241;;;;7332:540:::0;;;:::o;3031:207::-;1011:8;:14;-1:-1:-1;;;;;1011:14:20;997:10;:28;993:51;;1034:10;;-1:-1:-1;;;1034:10:20;;;;;;;;;;;993:51;3208:23:::1;::::0;3225:4:::1;::::0;3208:23:::1;::::0;;;::::1;3031:207::o:0;11965:1084::-;3395:21:2;:19;:21::i;:::-;1214:15:20::1;::::0;::::1;;1210:44;;;1238:16;;-1:-1:-1::0;;;1238:16:20::1;;;;;;;;;;;1210:44;-1:-1:-1::0;;;;;12141:38:20;::::2;:8;:38:::0;;;:24:::2;:38;::::0;;;;;::::2;;12136:70;;12188:18;;-1:-1:-1::0;;;12188:18:20::2;;;;;;;;;;;12136:70;12217:21;12257:9:::0;12252:291:::2;12276:10;:17;12272:1;:21;12252:291;;;12319:8;:23;;:38;12343:10;12354:1;12343:13;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;;12319:38;;;::::2;::::0;;;;;;-1:-1:-1;12319:38:20;:47:::2;;::::0;::::2;;12314:93;;12391:16;;-1:-1:-1::0;;;12391:16:20::2;;;;;;;;;;;12314:93;12438:8;:23;;:38;12462:10;12473:1;12462:13;;;;;;;;:::i;:::-;;;;;;;12438:38;;;;;;;;;;;:50;;:94;12506:12;-1:-1:-1::0;;;;;12438:94:20::2;-1:-1:-1::0;;;;;12438:94:20::2;;;;;;;;;;;;;12421:111;;;;;:::i;:::-;::::0;-1:-1:-1;12295:3:20::2;;12252:291;;;;12572:13;12557:11;:28;12553:62;;12594:21;;-1:-1:-1::0;;;12594:21:20::2;;;;;;;;;;;12553:62;12654:119;::::0;-1:-1:-1;;;12654:119:20;;12701:10:::2;12654:119;::::0;::::2;16859:51:24::0;12733:4:20::2;16926:18:24::0;;;16919:60;16995:18;;;16988:34;;;-1:-1:-1;;;;;12654:33:20;::::2;::::0;::::2;::::0;16832:18:24;;12654:119:20::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12824:9;12819:121;12843:10;:17;12839:1;:21;12819:121;;;12881:48;12903:10;12915;12926:1;12915:13;;;;;;;;:::i;12881:48::-;12862:3;;12819:121;;;;12992:10;-1:-1:-1::0;;;;;12977:65:20::2;;13004:10;13016:12;13030:11;12977:65;;;;;;;;:::i;:::-;;;;;;;;12126:923;3437:20:2::0;1949:1;-1:-1:-1;;;;;;;;;;;4113:23:2;3860:283;4386:534:20;1121:10;1104:8;:28;;;:16;:28;;;;;;;;1099:52;;1141:10;;-1:-1:-1;;;1141:10:20;;;;;;;;;;;1099:52;4590:8:::1;:34:::0;;;:23:::1;:34;::::0;;;;;;;:46:::1;::::0;::::1;:60:::0;;;4660:51;;::::1;:70:::0;;;4740:47:::1;::::0;::::1;:62:::0;;;4812:43:::1;::::0;;::::1;:54:::0;;-1:-1:-1;;4812:54:20::1;::::0;::::1;;;::::0;;4882:31;4590:34;;4882:31:::1;::::0;::::1;4386:534:::0;;;;;:::o;16326:511::-;16442:43;16497:67;16625:10;:17;-1:-1:-1;;;;;16567:89:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;16567:89:20;;;;;;;;;;;;;;;;;16497:159;;16672:9;16667:135;16691:10;:17;16687:1;:21;16667:135;;;-1:-1:-1;;;;;16746:30:20;;:8;:30;;;:24;:30;;;;;16777:13;;16746:30;;:8;16777:10;;16788:1;;16777:13;;;;;;:::i;:::-;;;;;;;;;;;;16746:45;;;;;;;;;;;;;-1:-1:-1;16746:45:20;16729:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;:11;;16741:1;;16729:14;;;;;;:::i;:::-;;;;;;;;;;:62;16710:3;;16667:135;;10023:957;3395:21:2;:19;:21::i;:::-;1214:15:20::1;::::0;::::1;;1210:44;;;1238:16;;-1:-1:-1::0;;;1238:16:20::1;;;;;;;;;;;1210:44;1334:8:::2;:34:::0;;;:23:::2;:34;::::0;;;;:43:::2;;::::0;10184:9;;1334:43:::2;;1329:85;;1398:16;;-1:-1:-1::0;;;1398:16:20::2;;;;;;;;;;;1329:85;-1:-1:-1::0;;;;;10210:38:20;::::3;:8;:38:::0;;;:24:::3;:38;::::0;;;;;::::3;;10205:70;;10257:18;;-1:-1:-1::0;;;10257:18:20::3;;;;;;;;;;;10205:70;10302:8;:34:::0;;;:23:::3;:34;::::0;;;;;;;-1:-1:-1;;;;;10302:60:20;::::3;::::0;;;;;;;;:82;::::3;10285:138;;10402:21;;-1:-1:-1::0;;;10402:21:20::3;;;;;;;;;;;10285:138;10462:68;::::0;-1:-1:-1;;;10462:68:20;;10496:10:::3;10462:68;::::0;::::3;16859:51:24::0;10516:4:20::3;16926:18:24::0;;;16919:60;16995:18;;;16988:34;;;-1:-1:-1;;;;;10462:33:20;::::3;::::0;::::3;::::0;16832:18:24;;10462:68:20::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10575:44;10597:10;10609:9;10575:21;:44::i;:::-;10652:18;10703:34:::0;;;:23:::3;:34;::::0;;;;:47:::3;;::::0;10673:77:::3;::::0;:15:::3;:77;:::i;:::-;10888:8;:34:::0;;;:23:::3;:34;::::0;;;;;;;;:51;;::::3;::::0;10765:208;;-1:-1:-1;;;;;18245:32:24;;18227:51;;18294:18;;;18287:34;;;18337:18;;;18330:34;18395:2;18380:18;;18373:34;;;10765:208:20;;18373:34:24;;-1:-1:-1;10888:34:20;;10795:10:::3;::::0;10765:208:::3;::::0;;;;;18214:3:24;10765:208:20;;::::3;10195:785;1264:1:::2;3437:20:2::0;1949:1;-1:-1:-1;;;;;;;;;;;4113:23:2;3860:283;11083:670:20;3395:21:2;:19;:21::i;:::-;1214:15:20::1;::::0;::::1;;1210:44;;;1238:16;;-1:-1:-1::0;;;1238:16:20::1;;;;;;;;;;;1210:44;1334:8:::2;:34:::0;;;:23:::2;:34;::::0;;;;:43:::2;;::::0;11201:9;;1334:43:::2;;1329:85;;1398:16;;-1:-1:-1::0;;;1398:16:20::2;;;;;;;;;;;1329:85;11239:8:::3;:34:::0;;;:23:::3;:34;::::0;;;;:46:::3;;::::0;11226:9:::3;:59;11222:105;;11306:21;;-1:-1:-1::0;;;11306:21:20::3;;;;;;;;;;;11222:105;11372:44;11394:10;11406:9;11372:21;:44::i;:::-;11449:18;11500:34:::0;;;:23:::3;:34;::::0;;;;:47:::3;;::::0;11470:77:::3;::::0;:15:::3;:77;:::i;:::-;11661:8;:34:::0;;;:23:::3;:34;::::0;;;;;;;;:51;;::::3;::::0;11562:184;;11638:9:::3;18620:25:24::0;;18661:18;;;18654:34;18704:18;;;18697:34;;;11449:98:20;;-1:-1:-1;11661:34:20;;11591:10:::3;::::0;11562:184:::3;::::0;18608:2:24;18593:18;11562:184:20::3;;;;;;;11212:541;1264:1:::2;3437:20:2::0;1949:1;-1:-1:-1;;;;;;;;;;;4113:23:2;3860:283;15541:602:20;-1:-1:-1;;;;;15717:43:20;;15646:4;15717:43;;;:37;:43;;;;;;;;:54;;;;;;;;15662:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15786:53;;-1:-1:-1;15809:25:20;;;;:30;15786:53;15782:96;;;15862:5;15855:12;;;;;15782:96;16020:8;:34;;;:23;:34;;;;;:47;;;15978:23;;:89;;16020:47;15978:89;:::i;:::-;15948:15;:119;15931:184;;;16099:5;16092:12;;;;;8395:420;1121:10;1104:8;:28;;;:16;:28;;;;;;;;1099:52;;1141:10;;-1:-1:-1;;;1141:10:20;;;;;;;;;;;1099:52;8557:6:::1;:13;8536:10;:17;:34;8532:68;;8579:21;;-1:-1:-1::0;;;8579:21:20::1;;;;;;;;;;;8532:68;8616:9;8611:198;8635:10;:17;8631:1;:21;8611:198;;;8726:6;8733:1;8726:9;;;;;;;;:::i;:::-;;;;;;;8673:8;:23;;:38;8697:10;8708:1;8697:13;;;;;;;;:::i;:::-;;;;;;;8673:38;;;;;;;;;;;:50;;:62;;;;8773:10;8784:1;8773:13;;;;;;;;:::i;:::-;;;;;;;8754:44;8788:6;8795:1;8788:9;;;;;;;;:::i;:::-;;;;;;;8754:44;;;;9304:25:24::0;;9292:2;9277:18;;9158:177;8754:44:20::1;;;;;;;;8654:3;;8611:198;;3470:384:2::0;-1:-1:-1;;;;;;;;;;;3670:9:2;;-1:-1:-1;;3670:20:2;3666:88;;3713:30;;-1:-1:-1;;;3713:30:2;;;;;;;;;;;3666:88;1991:1;3828:19;;3470:384::o;14881:402:20:-;15008:268;;;;;;;;15088:15;15008:268;;-1:-1:-1;15137:55:20;;;:44;15008:268;15137:55;;;;;;:93;;;15008:268;;;;;;15257:4;15008:268;;;;;;-1:-1:-1;;;;;14964:30:20;;;;;;:24;:30;;;;;:41;;;;;;;;;;;:312;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14964:312:20;;;;;;;;;;14881:402::o;3860:283:2:-;1949:1;-1:-1:-1;;;;;;;;;;;4113:23:2;3860:283::o;9071:205:0:-;9129:30;;3147:66;9186:27;8819:122;2970:67:1;6929:20:0;:18;:20::i;:::-;2970:67:1:o;2684:111:2:-;6929:20:0;:18;:20::i;:::-;2754:34:2::1;:32;:34::i;4578:312:1:-:0;4658:4;-1:-1:-1;;;;;4667:6:1;4650:23;;;:120;;;4764:6;-1:-1:-1;;;;;4728:42:1;:32;-1:-1:-1;;;;;;;;;;;1519:53:7;-1:-1:-1;;;;;1519:53:7;;1441:138;4728:32:1;-1:-1:-1;;;;;4728:42:1;;;4650:120;4633:251;;;4844:29;;-1:-1:-1;;;4844:29:1;;;;;;;;;;;3320:98:20;1011:8;:14;-1:-1:-1;;;;;1011:14:20;997:10;:28;993:51;;1034:10;;-1:-1:-1;;;1034:10:20;;;;;;;;;;;6032:538:1;6149:17;-1:-1:-1;;;;;6131:50:1;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6131:52:1;;;;;;;;-1:-1:-1;;6131:52:1;;;;;;;;;;;;:::i;:::-;;;6127:437;;6493:60;;-1:-1:-1;;;6493:60:1;;-1:-1:-1;;;;;19095:32:24;;6493:60:1;;;19077:51:24;19050:18;;6493:60:1;;;;;;;;6127:437;-1:-1:-1;;;;;;;;;;;6225:40:1;;6221:120;;6292:34;;-1:-1:-1;;;6292:34:1;;;;;9304:25:24;;;9277:18;;6292:34:1;9158:177:24;6221:120:1;6354:54;6384:17;6403:4;6354:29;:54::i;5007:213::-;5081:4;-1:-1:-1;;;;;5090:6:1;5073:23;;5069:145;;5174:29;;-1:-1:-1;;;5174:29:1;;;;;;;;;;;7082:141:0;7149:17;:15;:17::i;:::-;7144:73;;7189:17;;-1:-1:-1;;;7189:17:0;;;;;;;;;;;2801:183:2;6929:20:0;:18;:20::i;2264:344:7:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:7;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;8485:120:0:-;8535:4;8558:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8558:40:0;;;;;;-1:-1:-1;8485:120:0:o;1671:281:7:-;1748:17;-1:-1:-1;;;;;1748:29:7;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:7;;-1:-1:-1;;;;;19095:32:24;;1805:47:7;;;19077:51:24;19050:18;;1805:47:7;18931:203:24;1744:119:7;-1:-1:-1;;;;;;;;;;;1872:73:7;;-1:-1:-1;;;;;;1872:73:7;-1:-1:-1;;;;;1872:73:7;;;;;;;;;;1671:281::o;3916:253:15:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:15;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:15:o;6113:122:7:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:7;;;;;;;;;;;4437:582:15;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:15;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:15;;-1:-1:-1;;;;;19095:32:24;;4933:24:15;;;19077:51:24;19050:18;;4933:24:15;18931:203:24;4853:119:15;-1:-1:-1;4992:10:15;4605:408;4437:582;;;;;:::o;5559:487::-;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:15;;;;;;;;;;;14:131:24;-1:-1:-1;;;;;89:31:24;;79:42;;69:70;;135:1;132;125:12;150:367;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;481:2;466:18;;;;453:32;;-1:-1:-1;;;150:367:24:o;714:127::-;775:10;770:3;766:20;763:1;756:31;806:4;803:1;796:15;830:4;827:1;820:15;846:275;917:2;911:9;982:2;963:13;;-1:-1:-1;;959:27:24;947:40;;-1:-1:-1;;;;;1002:34:24;;1038:22;;;999:62;996:88;;;1064:18;;:::i;:::-;1100:2;1093:22;846:275;;-1:-1:-1;846:275:24:o;1126:183::-;1186:4;-1:-1:-1;;;;;1211:6:24;1208:30;1205:56;;;1241:18;;:::i;:::-;-1:-1:-1;1286:1:24;1282:14;1298:4;1278:25;;1126:183::o;1314:723::-;1368:5;1421:3;1414:4;1406:6;1402:17;1398:27;1388:55;;1439:1;1436;1429:12;1388:55;1479:6;1466:20;1506:64;1522:47;1562:6;1522:47;:::i;:::-;1506:64;:::i;:::-;1594:3;1618:6;1613:3;1606:19;1650:4;1645:3;1641:14;1634:21;;1711:4;1701:6;1698:1;1694:14;1686:6;1682:27;1678:38;1664:52;;1739:3;1731:6;1728:15;1725:35;;;1756:1;1753;1746:12;1725:35;1792:4;1784:6;1780:17;1806:200;1822:6;1817:3;1814:15;1806:200;;;1914:17;;1944:18;;1991:4;1982:14;;;;1839;1806:200;;;-1:-1:-1;2024:7:24;1314:723;-1:-1:-1;;;;;1314:723:24:o;2042:118::-;2128:5;2121:13;2114:21;2107:5;2104:32;2094:60;;2150:1;2147;2140:12;2165:738;2216:5;2269:3;2262:4;2254:6;2250:17;2246:27;2236:55;;2287:1;2284;2277:12;2236:55;2327:6;2314:20;2354:64;2370:47;2410:6;2370:47;:::i;2354:64::-;2442:3;2466:6;2461:3;2454:19;2498:4;2493:3;2489:14;2482:21;;2559:4;2549:6;2546:1;2542:14;2534:6;2530:27;2526:38;2512:52;;2587:3;2579:6;2576:15;2573:35;;;2604:1;2601;2594:12;2573:35;2640:4;2632:6;2628:17;2654:218;2670:6;2665:3;2662:15;2654:218;;;2752:3;2739:17;2769:28;2791:5;2769:28;:::i;:::-;2810:18;;2857:4;2848:14;;;;2687;2654:218;;2908:1312;3125:6;3133;3141;3149;3157;3210:3;3198:9;3189:7;3185:23;3181:33;3178:53;;;3227:1;3224;3217:12;3178:53;3267:9;3254:23;-1:-1:-1;;;;;3292:6:24;3289:30;3286:50;;;3332:1;3329;3322:12;3286:50;3355:61;3408:7;3399:6;3388:9;3384:22;3355:61;:::i;:::-;3345:71;;;3469:2;3458:9;3454:18;3441:32;-1:-1:-1;;;;;3488:8:24;3485:32;3482:52;;;3530:1;3527;3520:12;3482:52;3553:63;3608:7;3597:8;3586:9;3582:24;3553:63;:::i;:::-;3543:73;;;3669:2;3658:9;3654:18;3641:32;-1:-1:-1;;;;;3688:8:24;3685:32;3682:52;;;3730:1;3727;3720:12;3682:52;3753:63;3808:7;3797:8;3786:9;3782:24;3753:63;:::i;:::-;3743:73;;;3869:2;3858:9;3854:18;3841:32;-1:-1:-1;;;;;3888:8:24;3885:32;3882:52;;;3930:1;3927;3920:12;3882:52;3953:63;4008:7;3997:8;3986:9;3982:24;3953:63;:::i;:::-;3943:73;;;4069:3;4058:9;4054:19;4041:33;-1:-1:-1;;;;;4089:8:24;4086:32;4083:52;;;4131:1;4128;4121:12;4083:52;4154:60;4206:7;4195:8;4184:9;4180:24;4154:60;:::i;:::-;4144:70;;;2908:1312;;;;;;;;:::o;4225:247::-;4284:6;4337:2;4325:9;4316:7;4312:23;4308:32;4305:52;;;4353:1;4350;4343:12;4305:52;4392:9;4379:23;4411:31;4436:5;4411:31;:::i;4477:348::-;4561:6;4614:2;4602:9;4593:7;4589:23;4585:32;4582:52;;;4630:1;4627;4620:12;4582:52;4670:9;4657:23;-1:-1:-1;;;;;4695:6:24;4692:30;4689:50;;;4735:1;4732;4725:12;4689:50;4758:61;4811:7;4802:6;4791:9;4787:22;4758:61;:::i;:::-;4748:71;4477:348;-1:-1:-1;;;;4477:348:24:o;4830:487::-;4907:6;4915;4923;4976:2;4964:9;4955:7;4951:23;4947:32;4944:52;;;4992:1;4989;4982:12;4944:52;5037:23;;;-1:-1:-1;5136:2:24;5121:18;;5108:32;5149:33;5108:32;5149:33;:::i;:::-;4830:487;;5201:7;;-1:-1:-1;;;5281:2:24;5266:18;;;;5253:32;;4830:487::o;5322:226::-;5381:6;5434:2;5422:9;5413:7;5409:23;5405:32;5402:52;;;5450:1;5447;5440:12;5402:52;-1:-1:-1;5495:23:24;;5322:226;-1:-1:-1;5322:226:24:o;5553:744::-;5607:5;5660:3;5653:4;5645:6;5641:17;5637:27;5627:55;;5678:1;5675;5668:12;5627:55;5718:6;5705:20;5745:64;5761:47;5801:6;5761:47;:::i;5745:64::-;5833:3;5857:6;5852:3;5845:19;5889:4;5884:3;5880:14;5873:21;;5950:4;5940:6;5937:1;5933:14;5925:6;5921:27;5917:38;5903:52;;5978:3;5970:6;5967:15;5964:35;;;5995:1;5992;5985:12;5964:35;6031:4;6023:6;6019:17;6045:221;6061:6;6056:3;6053:15;6045:221;;;6143:3;6130:17;6160:31;6185:5;6160:31;:::i;:::-;6204:18;;6251:4;6242:14;;;;6078;6045:221;;6302:725;6429:6;6437;6445;6498:2;6486:9;6477:7;6473:23;6469:32;6466:52;;;6514:1;6511;6504:12;6466:52;6553:9;6540:23;6572:31;6597:5;6572:31;:::i;:::-;6622:5;-1:-1:-1;6678:2:24;6663:18;;6650:32;-1:-1:-1;;;;;6694:30:24;;6691:50;;;6737:1;6734;6727:12;6691:50;6760:61;6813:7;6804:6;6793:9;6789:22;6760:61;:::i;:::-;6750:71;;;6874:2;6863:9;6859:18;6846:32;-1:-1:-1;;;;;6893:8:24;6890:32;6887:52;;;6935:1;6932;6925:12;6887:52;6958:63;7013:7;7002:8;6991:9;6987:24;6958:63;:::i;:::-;6948:73;;;6302:725;;;;;:::o;7032:900::-;7109:6;7117;7170:2;7158:9;7149:7;7145:23;7141:32;7138:52;;;7186:1;7183;7176:12;7138:52;7225:9;7212:23;7244:31;7269:5;7244:31;:::i;:::-;7294:5;-1:-1:-1;7350:2:24;7335:18;;7322:32;-1:-1:-1;;;;;7366:30:24;;7363:50;;;7409:1;7406;7399:12;7363:50;7432:22;;7485:4;7477:13;;7473:27;-1:-1:-1;7463:55:24;;7514:1;7511;7504:12;7463:55;7554:2;7541:16;-1:-1:-1;;;;;7572:6:24;7569:30;7566:56;;;7602:18;;:::i;:::-;7644:57;7691:2;7668:17;;-1:-1:-1;;7664:31:24;7697:2;7660:40;7644:57;:::i;:::-;7724:6;7717:5;7710:21;7772:7;7767:2;7758:6;7754:2;7750:15;7746:24;7743:37;7740:57;;;7793:1;7790;7783:12;7740:57;7848:6;7843:2;7839;7835:11;7830:2;7823:5;7819:14;7806:49;7900:1;7895:2;7886:6;7879:5;7875:18;7871:27;7864:38;7921:5;7911:15;;;;;7032:900;;;;;:::o;7937:590::-;8055:6;8063;8116:2;8104:9;8095:7;8091:23;8087:32;8084:52;;;8132:1;8129;8122:12;8084:52;8172:9;8159:23;-1:-1:-1;;;;;8197:6:24;8194:30;8191:50;;;8237:1;8234;8227:12;8191:50;8260:61;8313:7;8304:6;8293:9;8289:22;8260:61;:::i;:::-;8250:71;;;8374:2;8363:9;8359:18;8346:32;-1:-1:-1;;;;;8393:8:24;8390:32;8387:52;;;8435:1;8432;8425:12;8387:52;8458:63;8513:7;8502:8;8491:9;8487:24;8458:63;:::i;:::-;8448:73;;;7937:590;;;;;:::o;8532:621::-;8716:2;8728:21;;;8798:13;;8701:18;;;8820:22;;;8668:4;;8899:15;;;8873:2;8858:18;;;8668:4;8942:185;8956:6;8953:1;8950:13;8942:185;;;9031:13;;9024:21;9017:29;9005:42;;9076:2;9102:15;;;;9067:12;;;;8978:1;8971:9;8942:185;;;-1:-1:-1;9144:3:24;;8532:621;-1:-1:-1;;;;;8532:621:24:o;9522:346::-;9590:6;9598;9651:2;9639:9;9630:7;9626:23;9622:32;9619:52;;;9667:1;9664;9657:12;9619:52;-1:-1:-1;;9712:23:24;;;9832:2;9817:18;;;9804:32;;-1:-1:-1;9522:346:24:o;10105:267::-;9953:12;;9941:25;;10015:4;10004:16;;;9998:23;9982:14;;;9975:47;10085:4;10074:16;;;10068:23;10061:31;10054:39;10038:14;;;10031:63;10303:2;10288:18;;10315:51;9873:227;10377:725;10504:6;10512;10520;10573:2;10561:9;10552:7;10548:23;10544:32;10541:52;;;10589:1;10586;10579:12;10541:52;10629:9;10616:23;-1:-1:-1;;;;;10654:6:24;10651:30;10648:50;;;10694:1;10691;10684:12;10648:50;10717:61;10770:7;10761:6;10750:9;10746:22;10717:61;:::i;:::-;10707:71;;;10828:2;10817:9;10813:18;10800:32;10841:31;10866:5;10841:31;:::i;:::-;10891:5;-1:-1:-1;10949:2:24;10934:18;;10921:32;-1:-1:-1;;;;;10965:32:24;;10962:52;;;11010:1;11007;11000:12;10962:52;11033:63;11088:7;11077:8;11066:9;11062:24;11033:63;:::i;11107:603::-;11209:6;11217;11225;11278:2;11266:9;11257:7;11253:23;11249:32;11246:52;;;11294:1;11291;11284:12;11246:52;11334:9;11321:23;-1:-1:-1;;;;;11359:6:24;11356:30;11353:50;;;11399:1;11396;11389:12;11353:50;11422:61;11475:7;11466:6;11455:9;11451:22;11422:61;:::i;:::-;11412:71;;;11533:2;11522:9;11518:18;11505:32;11546:31;11571:5;11546:31;:::i;11715:250::-;11800:1;11810:113;11824:6;11821:1;11818:13;11810:113;;;11900:11;;;11894:18;11881:11;;;11874:39;11846:2;11839:10;11810:113;;;-1:-1:-1;;11957:1:24;11939:16;;11932:27;11715:250::o;11970:396::-;12119:2;12108:9;12101:21;12082:4;12151:6;12145:13;12194:6;12189:2;12178:9;12174:18;12167:34;12210:79;12282:6;12277:2;12266:9;12262:18;12257:2;12249:6;12245:15;12210:79;:::i;:::-;12350:2;12329:15;-1:-1:-1;;12325:29:24;12310:45;;;;12357:2;12306:54;;11970:396;-1:-1:-1;;11970:396:24:o;12371:723::-;12463:6;12471;12479;12487;12495;12548:3;12536:9;12527:7;12523:23;12519:33;12516:53;;;12565:1;12562;12555:12;12516:53;12610:23;;;-1:-1:-1;12730:2:24;12715:18;;12702:32;;-1:-1:-1;12833:2:24;12818:18;;12805:32;;-1:-1:-1;12936:2:24;12921:18;;12908:32;;-1:-1:-1;13018:3:24;13003:19;;12990:33;13032:30;12990:33;13032:30;:::i;:::-;13081:7;13071:17;;;12371:723;;;;;;;;:::o;13099:483::-;13192:6;13200;13253:2;13241:9;13232:7;13228:23;13224:32;13221:52;;;13269:1;13266;13259:12;13221:52;13308:9;13295:23;13327:31;13352:5;13327:31;:::i;:::-;13377:5;-1:-1:-1;13433:2:24;13418:18;;13405:32;-1:-1:-1;;;;;13449:30:24;;13446:50;;;13492:1;13489;13482:12;13587:703;13841:2;13853:21;;;13923:13;;13826:18;;;13945:22;;;13793:4;;14024:15;;;13998:2;13983:18;;;13793:4;14067:197;14081:6;14078:1;14075:13;14067:197;;;14130:52;14178:3;14169:6;14163:13;9953:12;;9941:25;;10015:4;10004:16;;;9998:23;9982:14;;;9975:47;10085:4;10074:16;;;10068:23;10061:31;10054:39;10038:14;;10031:63;9873:227;14130:52;14251:2;14239:15;;;;;14211:4;14202:14;;;;;14103:1;14096:9;14067:197;;14295:590;14413:6;14421;14474:2;14462:9;14453:7;14449:23;14445:32;14442:52;;;14490:1;14487;14480:12;14442:52;14530:9;14517:23;-1:-1:-1;;;;;14555:6:24;14552:30;14549:50;;;14595:1;14592;14585:12;14549:50;14618:61;14671:7;14662:6;14651:9;14647:22;14618:61;:::i;14890:127::-;14951:10;14946:3;14942:20;14939:1;14932:31;14982:4;14979:1;14972:15;15006:4;15003:1;14996:15;15022:125;15087:9;;;15108:10;;;15105:36;;;15121:18;;:::i;15152:136::-;15191:3;15219:5;15209:39;;15228:18;;:::i;:::-;-1:-1:-1;;;15264:18:24;;15152:136::o;15293:127::-;15354:10;15349:3;15345:20;15342:1;15335:31;15385:4;15382:1;15375:15;15409:4;15406:1;15399:15;15425:420;15478:3;15516:5;15510:12;15543:6;15538:3;15531:19;15575:4;15570:3;15566:14;15559:21;;15614:4;15607:5;15603:16;15637:1;15647:173;15661:6;15658:1;15655:13;15647:173;;;15722:13;;15710:26;;15765:4;15756:14;;;;15793:17;;;;15683:1;15676:9;15647:173;;;-1:-1:-1;15836:3:24;;15425:420;-1:-1:-1;;;;15425:420:24:o;15850:332::-;16057:2;16046:9;16039:21;16020:4;16077:56;16129:2;16118:9;16114:18;16106:6;16077:56;:::i;:::-;16069:64;;16169:6;16164:2;16153:9;16149:18;16142:34;15850:332;;;;;:::o;16401:251::-;16471:6;16524:2;16512:9;16503:7;16499:23;16495:32;16492:52;;;16540:1;16537;16530:12;16492:52;16572:9;16566:16;16591:31;16616:5;16591:31;:::i;17312:245::-;17379:6;17432:2;17420:9;17411:7;17407:23;17403:32;17400:52;;;17448:1;17445;17438:12;17400:52;17480:9;17474:16;17499:28;17521:5;17499:28;:::i;17562:429::-;17797:2;17786:9;17779:21;17760:4;17817:56;17869:2;17858:9;17854:18;17846:6;17817:56;:::i;:::-;-1:-1:-1;;;;;17909:32:24;;;;17904:2;17889:18;;17882:60;-1:-1:-1;17973:2:24;17958:18;17951:34;17809:64;17562:429;-1:-1:-1;17562:429:24:o;18742:184::-;18812:6;18865:2;18853:9;18844:7;18840:23;18836:32;18833:52;;;18881:1;18878;18871:12;18833:52;-1:-1:-1;18904:16:24;;18742:184;-1:-1:-1;18742:184:24:o;19139:287::-;19268:3;19306:6;19300:13;19322:66;19381:6;19376:3;19369:4;19361:6;19357:17;19322:66;:::i;:::-;19404:16;;;;;19139:287;-1:-1:-1;;19139:287:24:o"},"gasEstimates":{"creation":{"codeDepositCost":"2530800","executionCost":"infinite","totalCost":"infinite"},"external":{"UPGRADE_INTERFACE_VERSION()":"infinite","addAdmin(address)":"28047","addSupportedToken(address)":"28064","batchConsumeView(address[],uint256[])":"infinite","batchPurchase(uint256[],address,uint256)":"infinite","batchPurchaseWithNative(uint256[])":"infinite","batchSetContentConfig(uint256[],uint256[],uint256[],uint256[],bool[])":"infinite","batchUpdateNativePrice(uint256[],uint256[])":"infinite","batchUpdateTokenPrice(uint256[],address,uint256[])":"infinite","consumeView(address,uint256)":"infinite","getPermissionDetails(address,uint256)":"7233","getUserPermissions(address,uint256[])":"infinite","hasViewPermission(address,uint256)":"infinite","initialize(address,address[],address[])":"infinite","isContentActive(uint256)":"2491","isSupportedToken(address)":"2600","migrate()":"3543","pause()":"27366","proxiableUUID()":"infinite","purchaseContent(uint256,address,uint256)":"infinite","purchaseWithNFT(uint256,address,uint256)":"infinite","purchaseWithNative(uint256)":"infinite","removeAdmin(address)":"28009","removeSupportedToken(address)":"28015","setContentConfig(uint256,uint256,uint256,uint256,bool)":"94476","unpause()":"27382","updateNativePrice(uint256,uint256)":"26147","updateTokenPrice(uint256,address,uint256)":"26749","upgradeToAndCall(address,bytes)":"infinite","version()":"2359"},"internal":{"_authorizeUpgrade(address)":"infinite","_createViewPermission(address,uint256)":"infinite"}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addAdmin(address)":"70480275","addSupportedToken(address)":"6d69fcaf","batchConsumeView(address[],uint256[])":"529e2b32","batchPurchase(uint256[],address,uint256)":"99ea24fe","batchPurchaseWithNative(uint256[])":"21f06438","batchSetContentConfig(uint256[],uint256[],uint256[],uint256[],bool[])":"09b952be","batchUpdateNativePrice(uint256[],uint256[])":"f1aa52f4","batchUpdateTokenPrice(uint256[],address,uint256[])":"8f0ff11b","consumeView(address,uint256)":"05059571","getPermissionDetails(address,uint256)":"8d13660e","getUserPermissions(address,uint256[])":"b303f53f","hasViewPermission(address,uint256)":"caae24b3","initialize(address,address[],address[])":"4a200fa5","isContentActive(uint256)":"40033b3d","isSupportedToken(address)":"240028e8","migrate()":"8fd3ab80","pause()":"8456cb59","proxiableUUID()":"52d1902d","purchaseContent(uint256,address,uint256)":"b6f1d140","purchaseWithNFT(uint256,address,uint256)":"86778641","purchaseWithNative(uint256)":"c3c12e69","removeAdmin(address)":"1785f53c","removeSupportedToken(address)":"76319190","setContentConfig(uint256,uint256,uint256,uint256,bool)":"b1b105fe","unpause()":"3f4ba83a","updateNativePrice(uint256,uint256)":"773f2054","updateTokenPrice(uint256,address,uint256)":"3428cebb","upgradeToAndCall(address,bytes)":"4f1ef286","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ArrayLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientPayment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoValidPermission\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AdminAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AdminRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"BatchNativePurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"BatchPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"ContentConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"viewCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"name\":\"ContentPurchased\",\"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\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nftContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NFTPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"NativePriceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"viewCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"name\":\"NativePurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"PermissionExpired\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SupportedTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SupportedTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"TokenPriceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"}],\"name\":\"ViewConsumed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"addSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"users\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"}],\"name\":\"batchConsumeView\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"batchPurchase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"}],\"name\":\"batchPurchaseWithNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"nativePrices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultViewCounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"viewDurations\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"isActiveArray\",\"type\":\"bool[]\"}],\"name\":\"batchSetContentConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"prices\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdateNativePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"prices\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdateTokenPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"consumeView\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"getPermissionDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"purchaseTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"}],\"internalType\":\"struct VideoPaymentStorage.ViewPermission\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"}],\"name\":\"getUserPermissions\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"purchaseTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"}],\"internalType\":\"struct VideoPaymentStorage.ViewPermission[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"hasViewPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"initialAdmins\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"supportedTokenAddresses\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"isContentActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isSupportedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"purchaseContent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"nftContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"purchaseWithNFT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"purchaseWithNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"removeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nativePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"defaultViewCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"viewDuration\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"name\":\"setContentConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"updateNativePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"updateTokenPrice\",\"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\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Main contract for video content payment and access control\",\"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.\"}],\"FailedCall()\":[{\"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.\"}],\"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\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"addAdmin(address)\":{\"details\":\"Add admin\",\"params\":{\"admin\":\"Admin address to add\"}},\"addSupportedToken(address)\":{\"details\":\"Add supported token\",\"params\":{\"token\":\"Token address to add\"}},\"batchConsumeView(address[],uint256[])\":{\"details\":\"Batch consume views for multiple users\",\"params\":{\"contentIds\":\"Content ID array\",\"users\":\"User address array\"},\"returns\":{\"_0\":\"Success status array\"}},\"batchPurchase(uint256[],address,uint256)\":{\"details\":\"Batch purchase content with ERC20 token\",\"params\":{\"contentIds\":\"Content ID array\",\"paymentToken\":\"Payment token address\",\"totalAmount\":\"Total payment amount\"}},\"batchPurchaseWithNative(uint256[])\":{\"details\":\"Batch purchase content with native coin\",\"params\":{\"contentIds\":\"Content ID array\"}},\"batchSetContentConfig(uint256[],uint256[],uint256[],uint256[],bool[])\":{\"details\":\"Batch set content configurations\",\"params\":{\"contentIds\":\"Content ID array\",\"defaultViewCounts\":\"Default view count array\",\"isActiveArray\":\"Active status array\",\"nativePrices\":\"Native price array\",\"viewDurations\":\"View duration array\"}},\"batchUpdateNativePrice(uint256[],uint256[])\":{\"details\":\"Batch update native coin prices for multiple contents\",\"params\":{\"contentIds\":\"Content ID array\",\"prices\":\"Price array\"}},\"batchUpdateTokenPrice(uint256[],address,uint256[])\":{\"details\":\"Batch update token prices for multiple contents\",\"params\":{\"contentIds\":\"Content ID array\",\"prices\":\"Price array\",\"token\":\"Token address\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"consumeView(address,uint256)\":{\"details\":\"Consume one view for user\",\"params\":{\"contentId\":\"Content ID\",\"user\":\"User address\"},\"returns\":{\"_0\":\"Success status\"}},\"getPermissionDetails(address,uint256)\":{\"details\":\"Get detailed permission info\",\"params\":{\"contentId\":\"Content ID\",\"user\":\"User address\"},\"returns\":{\"_0\":\"Permission details\"}},\"getUserPermissions(address,uint256[])\":{\"details\":\"Get user permissions for multiple contents\",\"params\":{\"contentIds\":\"Content ID array\",\"user\":\"User address\"},\"returns\":{\"_0\":\"Permission array\"}},\"hasViewPermission(address,uint256)\":{\"details\":\"Check if user has valid view permission\",\"params\":{\"contentId\":\"Content ID\",\"user\":\"User address\"},\"returns\":{\"_0\":\"Whether user has valid permission\"}},\"initialize(address,address[],address[])\":{\"details\":\"Initialize the contract\",\"params\":{\"initialAdmins\":\"Initial admin addresses array\",\"initialOwner\":\"Initial owner address\",\"supportedTokenAddresses\":\"Initial supported token addresses array\"}},\"isContentActive(uint256)\":{\"details\":\"Check if content is active\",\"params\":{\"contentId\":\"Content ID\"},\"returns\":{\"_0\":\"Whether content is active\"}},\"isSupportedToken(address)\":{\"details\":\"Check if token is supported\",\"params\":{\"token\":\"Token address to check\"},\"returns\":{\"_0\":\"Whether token is supported\"}},\"migrate()\":{\"details\":\"Migration function for future upgrades\"},\"pause()\":{\"details\":\"Pause contract\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {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.\"},\"purchaseContent(uint256,address,uint256)\":{\"details\":\"Purchase content with ERC20 token\",\"params\":{\"amount\":\"Payment amount\",\"contentId\":\"Content ID\",\"paymentToken\":\"Payment token address\"}},\"purchaseWithNFT(uint256,address,uint256)\":{\"details\":\"Purchase content with NFT\",\"params\":{\"contentId\":\"Content ID\",\"nftContract\":\"NFT contract address\",\"tokenId\":\"NFT token ID\"}},\"purchaseWithNative(uint256)\":{\"details\":\"Purchase content with native coin\",\"params\":{\"contentId\":\"Content ID\"}},\"removeAdmin(address)\":{\"details\":\"Remove admin\",\"params\":{\"admin\":\"Admin address to remove\"}},\"removeSupportedToken(address)\":{\"details\":\"Remove supported token\",\"params\":{\"token\":\"Token address to remove\"}},\"setContentConfig(uint256,uint256,uint256,uint256,bool)\":{\"details\":\"Set content configuration\",\"params\":{\"contentId\":\"Content ID\",\"defaultViewCount\":\"Default view count\",\"isActive\":\"Whether content is active\",\"nativePrice\":\"Native coin price\",\"viewDuration\":\"View duration in seconds\"}},\"unpause()\":{\"details\":\"Unpause contract\"},\"updateNativePrice(uint256,uint256)\":{\"details\":\"Update native coin price for content\",\"params\":{\"contentId\":\"Content ID\",\"price\":\"New price\"}},\"updateTokenPrice(uint256,address,uint256)\":{\"details\":\"Update token price for content\",\"params\":{\"contentId\":\"Content ID\",\"price\":\"New price\",\"token\":\"Token address\"}},\"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()\":{\"details\":\"Get contract version\"}},\"title\":\"VideoPayment\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/VideoPayment.sol\":\"VideoPayment\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.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 reinitialization) 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 Pointer to storage slot. Allows integrators to override it with a custom storage location.\\n     *\\n     * NOTE: Consider following the ERC-7201 formula to derive storage locations.\\n     */\\n    function _initializableStorageSlot() internal pure virtual returns (bytes32) {\\n        return INITIALIZABLE_STORAGE;\\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        bytes32 slot = _initializableStorageSlot();\\n        assembly {\\n            $.slot := slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (proxy/utils/UUPSUpgradeable.sol)\\n\\npragma solidity ^0.8.22;\\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 ERC-1967) 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 ERC-1167 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 ERC-1822 {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 ERC-1967 compliant implementation pointing to self.\\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 ERC-1967.\\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\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\"},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 EIP-1153 (transient storage) is available on the chain you're deploying at,\\n * consider using {ReentrancyGuardTransient} instead.\\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\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC1822.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1822: 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\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This library provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\\n */\\nlibrary ERC1967Utils {\\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"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/ERC1155/IERC1155.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.3.0) (token/ERC1155/IERC1155.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-1155 compliant contract, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-1155[ERC].\\n */\\ninterface IERC1155 is IERC165 {\\n    /**\\n     * @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.\\n     */\\n    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\\n\\n    /**\\n     * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\\n     * transfers.\\n     */\\n    event TransferBatch(\\n        address indexed operator,\\n        address indexed from,\\n        address indexed to,\\n        uint256[] ids,\\n        uint256[] values\\n    );\\n\\n    /**\\n     * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\\n     * `approved`.\\n     */\\n    event ApprovalForAll(address indexed account, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\\n     *\\n     * If an {URI} event was emitted for `id`, the standard\\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\\n     * returned by {IERC1155MetadataURI-uri}.\\n     */\\n    event URI(string value, uint256 indexed id);\\n\\n    /**\\n     * @dev Returns the value of tokens of token type `id` owned by `account`.\\n     */\\n    function balanceOf(address account, uint256 id) external view returns (uint256);\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\\n     *\\n     * Requirements:\\n     *\\n     * - `accounts` and `ids` must have the same length.\\n     */\\n    function balanceOfBatch(\\n        address[] calldata accounts,\\n        uint256[] calldata ids\\n    ) external view returns (uint256[] memory);\\n\\n    /**\\n     * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `operator` cannot be the zero address.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\\n     *\\n     * See {setApprovalForAll}.\\n     */\\n    function isApprovedForAll(address account, address operator) external view returns (bool);\\n\\n    /**\\n     * @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.\\n     *\\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155Received} on the receiver.\\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\\n     * reentrancy guards when interacting with untrusted contracts.\\n     *\\n     * Emits a {TransferSingle} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     * - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.\\n     * - `from` must have a balance of tokens of type `id` of at least `value` amount.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\\n     * acceptance magic value.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata data) external;\\n\\n    /**\\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\\n     *\\n     * WARNING: This function can potentially allow a reentrancy attack when transferring tokens\\n     * to an untrusted contract, when invoking {IERC1155Receiver-onERC1155BatchReceived} on the receiver.\\n     * Ensure to follow the checks-effects-interactions pattern and consider employing\\n     * reentrancy guards when interacting with untrusted contracts.\\n     *\\n     * Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments.\\n     *\\n     * Requirements:\\n     *\\n     * - `ids` and `values` must have the same length.\\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\\n     * acceptance magic value.\\n     */\\n    function safeBatchTransferFrom(\\n        address from,\\n        address to,\\n        uint256[] calldata ids,\\n        uint256[] calldata values,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x1d7a05b3219532ea5ece50a80cf390cac9109dc74e07763adfa463ab5a3af0dc\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-20 standard as defined in the ERC.\\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\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {IERC165} from \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC-721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n    /**\\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n     */\\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n    /**\\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n     */\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    /**\\n     * @dev Returns the number of tokens in ``owner``'s account.\\n     */\\n    function balanceOf(address owner) external view returns (uint256 balance);\\n\\n    /**\\n     * @dev Returns the owner of the `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n    /**\\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n     * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must exist and be owned by `from`.\\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\\n     *   {setApprovalForAll}.\\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\\n     *   a safe transfer.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Transfers `tokenId` token from `from` to `to`.\\n     *\\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n     *\\n     * Requirements:\\n     *\\n     * - `from` cannot be the zero address.\\n     * - `to` cannot be the zero address.\\n     * - `tokenId` token must be owned by `from`.\\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n     * The approval is cleared when the token is transferred.\\n     *\\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n     *\\n     * Requirements:\\n     *\\n     * - The caller must own the token or be an approved operator.\\n     * - `tokenId` must exist.\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address to, uint256 tokenId) external;\\n\\n    /**\\n     * @dev Approve or remove `operator` as an operator for the caller.\\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n     *\\n     * Requirements:\\n     *\\n     * - The `operator` cannot be the address zero.\\n     *\\n     * Emits an {ApprovalForAll} event.\\n     */\\n    function setApprovalForAll(address operator, bool approved) external;\\n\\n    /**\\n     * @dev Returns the account approved for `tokenId` token.\\n     *\\n     * Requirements:\\n     *\\n     * - `tokenId` must exist.\\n     */\\n    function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n    /**\\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n     *\\n     * See {setApprovalForAll}\\n     */\\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Interface of the ERC-165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\"},\"contracts/VideoPayment.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC721/IERC721.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\\\";\\nimport \\\"./interfaces/IVideoPayment.sol\\\";\\nimport \\\"./libraries/VideoPaymentStorage.sol\\\";\\n\\n/**\\n * @title VideoPayment\\n * @dev Main contract for video content payment and access control\\n */\\ncontract VideoPayment is\\n    Initializable,\\n    UUPSUpgradeable,\\n    ReentrancyGuardUpgradeable,\\n    IVideoPayment\\n{\\n    using VideoPaymentStorage for VideoPaymentStorage.VideoPaymentStorageStruct;\\n\\n    // Storage\\n    VideoPaymentStorage.VideoPaymentStorageStruct private _storage;\\n\\n    // Modifiers\\n    modifier onlyOwner() {\\n        if (msg.sender != _storage.owner) revert NotOwner();\\n        _;\\n    }\\n\\n    modifier onlyAdmin() {\\n        if (!_storage.isAdmin[msg.sender]) revert NotAdmin();\\n        _;\\n    }\\n\\n    modifier whenNotPaused() {\\n        if (_storage.paused) revert ContractPaused();\\n        _;\\n    }\\n\\n    modifier validContent(uint256 contentId) {\\n        if (!_storage.contentConfigs[contentId].isActive)\\n            revert InvalidContent();\\n        _;\\n    }\\n\\n    /// @custom:oz-upgrades-unsafe-allow constructor\\n    constructor() {\\n        _disableInitializers();\\n    }\\n\\n    /**\\n     * @dev Initialize the contract\\n     * @param initialOwner Initial owner address\\n     * @param initialAdmins Initial admin addresses array\\n     * @param supportedTokenAddresses Initial supported token addresses array\\n     */\\n    function initialize(\\n        address initialOwner,\\n        address[] memory initialAdmins,\\n        address[] memory supportedTokenAddresses\\n    ) public initializer {\\n        if (initialOwner == address(0)) revert ZeroAddress();\\n\\n        __UUPSUpgradeable_init();\\n        __ReentrancyGuard_init();\\n\\n        _storage.owner = initialOwner;\\n        _storage.version = 1;\\n        _storage.paused = false;\\n\\n        // Add initial admins\\n        for (uint256 i = 0; i < initialAdmins.length; i++) {\\n            if (initialAdmins[i] != address(0)) {\\n                _storage.isAdmin[initialAdmins[i]] = true;\\n                emit AdminAdded(initialAdmins[i]);\\n            }\\n        }\\n\\n        // Add initial supported tokens\\n        for (uint256 i = 0; i < supportedTokenAddresses.length; i++) {\\n            if (supportedTokenAddresses[i] != address(0)) {\\n                _storage.supportedTokens[supportedTokenAddresses[i]] = true;\\n                emit SupportedTokenAdded(supportedTokenAddresses[i]);\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev Get contract version\\n     */\\n    function version() external view returns (uint256) {\\n        return _storage.version;\\n    }\\n\\n    /**\\n     * @dev Migration function for future upgrades\\n     */\\n    function migrate() external onlyOwner {\\n        // This function will be implemented in future versions if needed\\n        // Currently just emit event for tracking\\n        emit Upgraded(address(this));\\n    }\\n\\n    /**\\n     * @dev Authorize upgrade (required by UUPSUpgradeable)\\n     */\\n    function _authorizeUpgrade(\\n        address newImplementation\\n    ) internal override onlyOwner {}\\n\\n    // ============ Owner Management Functions ============\\n\\n    /**\\n     * @dev Add admin\\n     * @param admin Admin address to add\\n     */\\n    function addAdmin(address admin) external onlyOwner {\\n        if (admin == address(0)) revert ZeroAddress();\\n        _storage.isAdmin[admin] = true;\\n        emit AdminAdded(admin);\\n    }\\n\\n    /**\\n     * @dev Remove admin\\n     * @param admin Admin address to remove\\n     */\\n    function removeAdmin(address admin) external onlyOwner {\\n        if (admin == address(0)) revert ZeroAddress();\\n        _storage.isAdmin[admin] = false;\\n        emit AdminRemoved(admin);\\n    }\\n\\n    // ============ Content Management Functions ============\\n\\n    /**\\n     * @dev Set content configuration\\n     * @param contentId Content ID\\n     * @param nativePrice Native coin price\\n     * @param defaultViewCount Default view count\\n     * @param viewDuration View duration in seconds\\n     * @param isActive Whether content is active\\n     */\\n    function setContentConfig(\\n        uint256 contentId,\\n        uint256 nativePrice,\\n        uint256 defaultViewCount,\\n        uint256 viewDuration,\\n        bool isActive\\n    ) external onlyAdmin {\\n        _storage.contentConfigs[contentId].nativePrice = nativePrice;\\n        _storage.contentConfigs[contentId].defaultViewCount = defaultViewCount;\\n        _storage.contentConfigs[contentId].viewDuration = viewDuration;\\n        _storage.contentConfigs[contentId].isActive = isActive;\\n\\n        emit ContentConfigUpdated(contentId);\\n    }\\n\\n    /**\\n     * @dev Batch set content configurations\\n     * @param contentIds Content ID array\\n     * @param nativePrices Native price array\\n     * @param defaultViewCounts Default view count array\\n     * @param viewDurations View duration array\\n     * @param isActiveArray Active status array\\n     */\\n    function batchSetContentConfig(\\n        uint256[] memory contentIds,\\n        uint256[] memory nativePrices,\\n        uint256[] memory defaultViewCounts,\\n        uint256[] memory viewDurations,\\n        bool[] memory isActiveArray\\n    ) external onlyAdmin {\\n        if (\\n            contentIds.length != nativePrices.length ||\\n            contentIds.length != defaultViewCounts.length ||\\n            contentIds.length != viewDurations.length ||\\n            contentIds.length != isActiveArray.length\\n        ) revert ArrayLengthMismatch();\\n\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            _storage.contentConfigs[contentIds[i]].nativePrice = nativePrices[\\n                i\\n            ];\\n            _storage\\n                .contentConfigs[contentIds[i]]\\n                .defaultViewCount = defaultViewCounts[i];\\n            _storage.contentConfigs[contentIds[i]].viewDuration = viewDurations[\\n                i\\n            ];\\n            _storage.contentConfigs[contentIds[i]].isActive = isActiveArray[i];\\n\\n            emit ContentConfigUpdated(contentIds[i]);\\n        }\\n    }\\n\\n    /**\\n     * @dev Check if content is active\\n     * @param contentId Content ID\\n     * @return Whether content is active\\n     */\\n    function isContentActive(uint256 contentId) external view returns (bool) {\\n        return _storage.contentConfigs[contentId].isActive;\\n    }\\n\\n    // ============ Price Management Functions ============\\n\\n    /**\\n     * @dev Update token price for content\\n     * @param contentId Content ID\\n     * @param token Token address\\n     * @param price New price\\n     */\\n    function updateTokenPrice(\\n        uint256 contentId,\\n        address token,\\n        uint256 price\\n    ) external onlyAdmin {\\n        if (token == address(0)) revert ZeroAddress();\\n        _storage.contentConfigs[contentId].tokenPrices[token] = price;\\n        emit TokenPriceUpdated(contentId, token, price);\\n    }\\n\\n    /**\\n     * @dev Batch update token prices for multiple contents\\n     * @param contentIds Content ID array\\n     * @param token Token address\\n     * @param prices Price array\\n     */\\n    function batchUpdateTokenPrice(\\n        uint256[] memory contentIds,\\n        address token,\\n        uint256[] memory prices\\n    ) external onlyAdmin {\\n        if (contentIds.length != prices.length) revert ArrayLengthMismatch();\\n        if (token == address(0)) revert ZeroAddress();\\n\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            _storage.contentConfigs[contentIds[i]].tokenPrices[token] = prices[\\n                i\\n            ];\\n            emit TokenPriceUpdated(contentIds[i], token, prices[i]);\\n        }\\n    }\\n\\n    /**\\n     * @dev Update native coin price for content\\n     * @param contentId Content ID\\n     * @param price New price\\n     */\\n    function updateNativePrice(\\n        uint256 contentId,\\n        uint256 price\\n    ) external onlyAdmin {\\n        _storage.contentConfigs[contentId].nativePrice = price;\\n        emit NativePriceUpdated(contentId, price);\\n    }\\n\\n    /**\\n     * @dev Batch update native coin prices for multiple contents\\n     * @param contentIds Content ID array\\n     * @param prices Price array\\n     */\\n    function batchUpdateNativePrice(\\n        uint256[] memory contentIds,\\n        uint256[] memory prices\\n    ) external onlyAdmin {\\n        if (contentIds.length != prices.length) revert ArrayLengthMismatch();\\n\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            _storage.contentConfigs[contentIds[i]].nativePrice = prices[i];\\n            emit NativePriceUpdated(contentIds[i], prices[i]);\\n        }\\n    }\\n\\n    // ============ Payment Token Management Functions ============\\n\\n    /**\\n     * @dev Add supported token\\n     * @param token Token address to add\\n     */\\n    function addSupportedToken(address token) external onlyAdmin {\\n        if (token == address(0)) revert ZeroAddress();\\n        _storage.supportedTokens[token] = true;\\n        emit SupportedTokenAdded(token);\\n    }\\n\\n    /**\\n     * @dev Remove supported token\\n     * @param token Token address to remove\\n     */\\n    function removeSupportedToken(address token) external onlyAdmin {\\n        if (token == address(0)) revert ZeroAddress();\\n        _storage.supportedTokens[token] = false;\\n        emit SupportedTokenRemoved(token);\\n    }\\n\\n    /**\\n     * @dev Check if token is supported\\n     * @param token Token address to check\\n     * @return Whether token is supported\\n     */\\n    function isSupportedToken(address token) external view returns (bool) {\\n        return _storage.supportedTokens[token];\\n    }\\n\\n    // ============ Purchase Functions ============\\n\\n    /**\\n     * @dev Purchase content with ERC20 token\\n     * @param contentId Content ID\\n     * @param paymentToken Payment token address\\n     * @param amount Payment amount\\n     */\\n    function purchaseContent(\\n        uint256 contentId,\\n        address paymentToken,\\n        uint256 amount\\n    ) external nonReentrant whenNotPaused validContent(contentId) {\\n        if (!_storage.supportedTokens[paymentToken]) revert UnsupportedToken();\\n        if (\\n            _storage.contentConfigs[contentId].tokenPrices[paymentToken] !=\\n            amount\\n        ) revert InsufficientPayment();\\n\\n        // Transfer payment\\n        IERC20(paymentToken).transferFrom(msg.sender, address(this), amount);\\n\\n        // Create view permission\\n        _createViewPermission(msg.sender, contentId);\\n\\n        // Emit event\\n        uint256 validUntil = block.timestamp +\\n            _storage.contentConfigs[contentId].viewDuration;\\n        emit ContentPurchased(\\n            msg.sender,\\n            contentId,\\n            paymentToken,\\n            amount,\\n            _storage.contentConfigs[contentId].defaultViewCount,\\n            validUntil\\n        );\\n    }\\n\\n    /**\\n     * @dev Purchase content with native coin\\n     * @param contentId Content ID\\n     */\\n    function purchaseWithNative(\\n        uint256 contentId\\n    ) external payable nonReentrant whenNotPaused validContent(contentId) {\\n        if (msg.value != _storage.contentConfigs[contentId].nativePrice)\\n            revert InsufficientPayment();\\n\\n        // Create view permission\\n        _createViewPermission(msg.sender, contentId);\\n\\n        // Emit event\\n        uint256 validUntil = block.timestamp +\\n            _storage.contentConfigs[contentId].viewDuration;\\n        emit NativePurchased(\\n            msg.sender,\\n            contentId,\\n            msg.value,\\n            _storage.contentConfigs[contentId].defaultViewCount,\\n            validUntil\\n        );\\n    }\\n\\n    /**\\n     * @dev Batch purchase content with ERC20 token\\n     * @param contentIds Content ID array\\n     * @param paymentToken Payment token address\\n     * @param totalAmount Total payment amount\\n     */\\n    function batchPurchase(\\n        uint256[] memory contentIds,\\n        address paymentToken,\\n        uint256 totalAmount\\n    ) external nonReentrant whenNotPaused {\\n        if (!_storage.supportedTokens[paymentToken]) revert UnsupportedToken();\\n\\n        uint256 expectedTotal = 0;\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            if (!_storage.contentConfigs[contentIds[i]].isActive)\\n                revert InvalidContent();\\n            expectedTotal += _storage.contentConfigs[contentIds[i]].tokenPrices[\\n                paymentToken\\n            ];\\n        }\\n\\n        if (totalAmount != expectedTotal) revert InsufficientPayment();\\n\\n        // Transfer payment\\n        IERC20(paymentToken).transferFrom(\\n            msg.sender,\\n            address(this),\\n            totalAmount\\n        );\\n\\n        // Create view permissions\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            _createViewPermission(msg.sender, contentIds[i]);\\n        }\\n\\n        // Emit event\\n        emit BatchPurchased(msg.sender, contentIds, paymentToken, totalAmount);\\n    }\\n\\n    /**\\n     * @dev Batch purchase content with native coin\\n     * @param contentIds Content ID array\\n     */\\n    function batchPurchaseWithNative(\\n        uint256[] memory contentIds\\n    ) external payable nonReentrant whenNotPaused {\\n        uint256 expectedTotal = 0;\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            if (!_storage.contentConfigs[contentIds[i]].isActive)\\n                revert InvalidContent();\\n            expectedTotal += _storage.contentConfigs[contentIds[i]].nativePrice;\\n        }\\n\\n        if (msg.value != expectedTotal) revert InsufficientPayment();\\n\\n        // Create view permissions\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            _createViewPermission(msg.sender, contentIds[i]);\\n        }\\n\\n        // Emit event\\n        emit BatchNativePurchased(msg.sender, contentIds, msg.value);\\n    }\\n\\n    /**\\n     * @dev Purchase content with NFT\\n     * @param contentId Content ID\\n     * @param nftContract NFT contract address\\n     * @param tokenId NFT token ID\\n     */\\n    function purchaseWithNFT(\\n        uint256 contentId,\\n        address nftContract,\\n        uint256 tokenId\\n    ) external nonReentrant whenNotPaused validContent(contentId) {\\n        // Check NFT ownership\\n        if (IERC721(nftContract).ownerOf(tokenId) != msg.sender)\\n            revert NoValidPermission();\\n\\n        // Transfer NFT (burn it by transferring to this contract)\\n        IERC721(nftContract).transferFrom(msg.sender, address(this), tokenId);\\n\\n        // Create view permission\\n        _createViewPermission(msg.sender, contentId);\\n\\n        // Emit event\\n        emit NFTPurchased(msg.sender, contentId, nftContract, tokenId);\\n    }\\n\\n    /**\\n     * @dev Internal function to create view permission\\n     * @param user User address\\n     * @param contentId Content ID\\n     */\\n    function _createViewPermission(address user, uint256 contentId) internal {\\n        _storage.userPermissions[user][contentId] = VideoPaymentStorage\\n            .ViewPermission({\\n                purchaseTime: block.timestamp,\\n                remainingViews: _storage\\n                    .contentConfigs[contentId]\\n                    .defaultViewCount,\\n                isValid: true\\n            });\\n    }\\n\\n    // ============ Permission Verification Functions ============\\n\\n    /**\\n     * @dev Check if user has valid view permission\\n     * @param user User address\\n     * @param contentId Content ID\\n     * @return Whether user has valid permission\\n     */\\n    function hasViewPermission(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (bool) {\\n        VideoPaymentStorage.ViewPermission memory permission = _storage\\n            .userPermissions[user][contentId];\\n\\n        if (!permission.isValid || permission.remainingViews == 0) {\\n            return false;\\n        }\\n\\n        // Check if permission has expired\\n        if (\\n            block.timestamp >\\n            permission.purchaseTime +\\n                _storage.contentConfigs[contentId].viewDuration\\n        ) {\\n            return false;\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Get user permissions for multiple contents\\n     * @param user User address\\n     * @param contentIds Content ID array\\n     * @return Permission array\\n     */\\n    function getUserPermissions(\\n        address user,\\n        uint256[] memory contentIds\\n    ) external view returns (VideoPaymentStorage.ViewPermission[] memory) {\\n        VideoPaymentStorage.ViewPermission[]\\n            memory permissions = new VideoPaymentStorage.ViewPermission[](\\n                contentIds.length\\n            );\\n\\n        for (uint256 i = 0; i < contentIds.length; i++) {\\n            permissions[i] = _storage.userPermissions[user][contentIds[i]];\\n        }\\n\\n        return permissions;\\n    }\\n\\n    /**\\n     * @dev Get detailed permission info\\n     * @param user User address\\n     * @param contentId Content ID\\n     * @return Permission details\\n     */\\n    function getPermissionDetails(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (VideoPaymentStorage.ViewPermission memory) {\\n        return _storage.userPermissions[user][contentId];\\n    }\\n\\n    /**\\n     * @dev Consume one view for user\\n     * @param user User address\\n     * @param contentId Content ID\\n     * @return Success status\\n     */\\n    function consumeView(\\n        address user,\\n        uint256 contentId\\n    ) external onlyAdmin returns (bool) {\\n        VideoPaymentStorage.ViewPermission storage permission = _storage\\n            .userPermissions[user][contentId];\\n\\n        if (!permission.isValid || permission.remainingViews == 0) {\\n            revert NoValidPermission();\\n        }\\n\\n        // Check if permission has expired\\n        if (\\n            block.timestamp >\\n            permission.purchaseTime +\\n                _storage.contentConfigs[contentId].viewDuration\\n        ) {\\n            revert NoValidPermission();\\n        }\\n\\n        // Consume one view\\n        permission.remainingViews--;\\n\\n        emit ViewConsumed(user, contentId, permission.remainingViews);\\n\\n        // Mark as invalid if no views remaining\\n        if (permission.remainingViews == 0) {\\n            permission.isValid = false;\\n            emit PermissionExpired(user, contentId);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Batch consume views for multiple users\\n     * @param users User address array\\n     * @param contentIds Content ID array\\n     * @return Success status array\\n     */\\n    function batchConsumeView(\\n        address[] memory users,\\n        uint256[] memory contentIds\\n    ) external onlyAdmin returns (bool[] memory) {\\n        if (users.length != contentIds.length) revert ArrayLengthMismatch();\\n\\n        bool[] memory results = new bool[](users.length);\\n\\n        for (uint256 i = 0; i < users.length; i++) {\\n            VideoPaymentStorage.ViewPermission storage permission = _storage\\n                .userPermissions[users[i]][contentIds[i]];\\n\\n            if (!permission.isValid || permission.remainingViews == 0) {\\n                results[i] = false;\\n                continue;\\n            }\\n\\n            // Check if permission has expired\\n            if (\\n                block.timestamp >\\n                permission.purchaseTime +\\n                    _storage.contentConfigs[contentIds[i]].viewDuration\\n            ) {\\n                results[i] = false;\\n                continue;\\n            }\\n\\n            // Consume one view\\n            permission.remainingViews--;\\n            emit ViewConsumed(\\n                users[i],\\n                contentIds[i],\\n                permission.remainingViews\\n            );\\n\\n            // Mark as invalid if no views remaining\\n            if (permission.remainingViews == 0) {\\n                permission.isValid = false;\\n                emit PermissionExpired(users[i], contentIds[i]);\\n            }\\n\\n            results[i] = true;\\n        }\\n\\n        return results;\\n    }\\n\\n    // ============ Emergency Control Functions ============\\n\\n    /**\\n     * @dev Pause contract\\n     */\\n    function pause() external onlyOwner {\\n        _storage.paused = true;\\n        emit Paused();\\n    }\\n\\n    /**\\n     * @dev Unpause contract\\n     */\\n    function unpause() external onlyOwner {\\n        _storage.paused = false;\\n        emit Unpaused();\\n    }\\n}\\n\",\"keccak256\":\"0x5af4b5ae421b0f22d20cb878aedb5a238f356fdc2815de0f82641cc63fda3b52\",\"license\":\"MIT\"},\"contracts/interfaces/IVideoPayment.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport \\\"../libraries/VideoPaymentStorage.sol\\\";\\n\\n/**\\n * @title IVideoPayment\\n * @dev Interface for VideoPayment contract\\n */\\ninterface IVideoPayment {\\n    // Custom errors\\n    error NotOwner();\\n    error NotAdmin();\\n    error ContractPaused();\\n    error InvalidContent();\\n    error UnsupportedToken();\\n    error InsufficientPayment();\\n    error NoValidPermission();\\n    error ArrayLengthMismatch();\\n    error ZeroAddress();\\n    error InvalidAmount();\\n\\n    // Events - Purchase related\\n    event ContentPurchased(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        address paymentToken,\\n        uint256 amount,\\n        uint256 viewCount,\\n        uint256 validUntil\\n    );\\n\\n    event NativePurchased(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        uint256 amount,\\n        uint256 viewCount,\\n        uint256 validUntil\\n    );\\n\\n    event BatchPurchased(\\n        address indexed user,\\n        uint256[] contentIds,\\n        address paymentToken,\\n        uint256 totalAmount\\n    );\\n\\n    event BatchNativePurchased(\\n        address indexed user,\\n        uint256[] contentIds,\\n        uint256 totalAmount\\n    );\\n\\n    event NFTPurchased(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        address nftContract,\\n        uint256 tokenId\\n    );\\n\\n    // Events - Permission related\\n    event ViewConsumed(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        uint256 remainingViews\\n    );\\n\\n    event PermissionExpired(address indexed user, uint256 indexed contentId);\\n\\n    // Events - Management related\\n    event AdminAdded(address indexed admin);\\n    event AdminRemoved(address indexed admin);\\n    event ContentConfigUpdated(uint256 indexed contentId);\\n    event TokenPriceUpdated(\\n        uint256 indexed contentId,\\n        address indexed token,\\n        uint256 price\\n    );\\n    event NativePriceUpdated(uint256 indexed contentId, uint256 price);\\n    event SupportedTokenAdded(address indexed token);\\n    event SupportedTokenRemoved(address indexed token);\\n    event Paused();\\n    event Unpaused();\\n    event Upgraded(address indexed newImplementation);\\n\\n    // Owner management functions\\n    function addAdmin(address admin) external;\\n    function removeAdmin(address admin) external;\\n\\n    // Content management functions\\n    function setContentConfig(\\n        uint256 contentId,\\n        uint256 nativePrice,\\n        uint256 defaultViewCount,\\n        uint256 viewDuration,\\n        bool isActive\\n    ) external;\\n    function batchSetContentConfig(\\n        uint256[] memory contentIds,\\n        uint256[] memory nativePrices,\\n        uint256[] memory defaultViewCounts,\\n        uint256[] memory viewDurations,\\n        bool[] memory isActiveArray\\n    ) external;\\n    function isContentActive(uint256 contentId) external view returns (bool);\\n\\n    // Price management functions\\n    function updateTokenPrice(\\n        uint256 contentId,\\n        address token,\\n        uint256 price\\n    ) external;\\n    function batchUpdateTokenPrice(\\n        uint256[] memory contentIds,\\n        address token,\\n        uint256[] memory prices\\n    ) external;\\n    function updateNativePrice(uint256 contentId, uint256 price) external;\\n    function batchUpdateNativePrice(\\n        uint256[] memory contentIds,\\n        uint256[] memory prices\\n    ) external;\\n\\n    // Payment token management functions\\n    function addSupportedToken(address token) external;\\n    function removeSupportedToken(address token) external;\\n    function isSupportedToken(address token) external view returns (bool);\\n\\n    // Purchase functions\\n    function purchaseContent(\\n        uint256 contentId,\\n        address paymentToken,\\n        uint256 amount\\n    ) external;\\n    function purchaseWithNative(uint256 contentId) external payable;\\n    function batchPurchase(\\n        uint256[] memory contentIds,\\n        address paymentToken,\\n        uint256 totalAmount\\n    ) external;\\n    function batchPurchaseWithNative(\\n        uint256[] memory contentIds\\n    ) external payable;\\n    function purchaseWithNFT(\\n        uint256 contentId,\\n        address nftContract,\\n        uint256 tokenId\\n    ) external;\\n\\n    // Permission verification functions\\n    function hasViewPermission(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (bool);\\n    function getUserPermissions(\\n        address user,\\n        uint256[] memory contentIds\\n    ) external view returns (VideoPaymentStorage.ViewPermission[] memory);\\n    function getPermissionDetails(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (VideoPaymentStorage.ViewPermission memory);\\n    function consumeView(\\n        address user,\\n        uint256 contentId\\n    ) external returns (bool);\\n    function batchConsumeView(\\n        address[] memory users,\\n        uint256[] memory contentIds\\n    ) external returns (bool[] memory);\\n\\n    // Emergency control functions\\n    function pause() external;\\n    function unpause() external;\\n\\n    // Upgrade functions\\n    function version() external view returns (uint256);\\n    function migrate() external;\\n}\\n\",\"keccak256\":\"0xf4f2e68285f9fa3c26b0fb61ae356ee6f837e9367dd5ad1add688f49751914cd\",\"license\":\"MIT\"},\"contracts/libraries/VideoPaymentStorage.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\n/**\\n * @title VideoPaymentStorage\\n * @dev Storage layout for VideoPayment contract to ensure upgrade compatibility\\n */\\nlibrary VideoPaymentStorage {\\n    // Storage layout version for upgrade compatibility\\n    uint256 constant STORAGE_VERSION = 1;\\n\\n    struct ContentConfig {\\n        mapping(address => uint256) tokenPrices; // ERC20 token prices\\n        uint256 nativePrice; // Native coin price\\n        uint256 defaultViewCount; // Default view count when purchased\\n        uint256 viewDuration; // View validity duration in seconds\\n        bool isActive; // Whether content is purchasable\\n    }\\n\\n    struct ViewPermission {\\n        uint256 purchaseTime; // Purchase timestamp\\n        uint256 remainingViews; // Remaining view count\\n        bool isValid; // Whether permission is valid\\n    }\\n\\n    struct VideoPaymentStorageStruct {\\n        // Owner and admin management\\n        address owner;\\n        mapping(address => bool) isAdmin;\\n        // Content management\\n        mapping(uint256 => ContentConfig) contentConfigs;\\n        // User permissions\\n        mapping(address => mapping(uint256 => ViewPermission)) userPermissions;\\n        // Supported payment tokens\\n        mapping(address => bool) supportedTokens;\\n        // Emergency pause\\n        bool paused;\\n        // Contract version\\n        uint256 version;\\n        // Reserved storage slots for future upgrades\\n        uint256[50] __gap;\\n    }\\n}\\n\",\"keccak256\":\"0x039f47df083413b22a6a07bbcd73eae115935d4dba5b14e307ba78831fa8d640\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[{"astId":2111,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"_storage","offset":0,"slot":"0","type":"t_struct(VideoPaymentStorageStruct)4106_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)50_storage":{"base":"t_uint256","encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_uint256,t_struct(ViewPermission)4075_storage))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => struct VideoPaymentStorage.ViewPermission))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_struct(ViewPermission)4075_storage)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_struct(ContentConfig)4068_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct VideoPaymentStorage.ContentConfig)","numberOfBytes":"32","value":"t_struct(ContentConfig)4068_storage"},"t_mapping(t_uint256,t_struct(ViewPermission)4075_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct VideoPaymentStorage.ViewPermission)","numberOfBytes":"32","value":"t_struct(ViewPermission)4075_storage"},"t_struct(ContentConfig)4068_storage":{"encoding":"inplace","label":"struct VideoPaymentStorage.ContentConfig","members":[{"astId":4059,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"tokenPrices","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":4061,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"nativePrice","offset":0,"slot":"1","type":"t_uint256"},{"astId":4063,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"defaultViewCount","offset":0,"slot":"2","type":"t_uint256"},{"astId":4065,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"viewDuration","offset":0,"slot":"3","type":"t_uint256"},{"astId":4067,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"isActive","offset":0,"slot":"4","type":"t_bool"}],"numberOfBytes":"160"},"t_struct(VideoPaymentStorageStruct)4106_storage":{"encoding":"inplace","label":"struct VideoPaymentStorage.VideoPaymentStorageStruct","members":[{"astId":4077,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"owner","offset":0,"slot":"0","type":"t_address"},{"astId":4081,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"isAdmin","offset":0,"slot":"1","type":"t_mapping(t_address,t_bool)"},{"astId":4086,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"contentConfigs","offset":0,"slot":"2","type":"t_mapping(t_uint256,t_struct(ContentConfig)4068_storage)"},{"astId":4093,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"userPermissions","offset":0,"slot":"3","type":"t_mapping(t_address,t_mapping(t_uint256,t_struct(ViewPermission)4075_storage))"},{"astId":4097,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"supportedTokens","offset":0,"slot":"4","type":"t_mapping(t_address,t_bool)"},{"astId":4099,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"paused","offset":0,"slot":"5","type":"t_bool"},{"astId":4101,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"version","offset":0,"slot":"6","type":"t_uint256"},{"astId":4105,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"__gap","offset":0,"slot":"7","type":"t_array(t_uint256)50_storage"}],"numberOfBytes":"1824"},"t_struct(ViewPermission)4075_storage":{"encoding":"inplace","label":"struct VideoPaymentStorage.ViewPermission","members":[{"astId":4070,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"purchaseTime","offset":0,"slot":"0","type":"t_uint256"},{"astId":4072,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"remainingViews","offset":0,"slot":"1","type":"t_uint256"},{"astId":4074,"contract":"contracts/VideoPayment.sol:VideoPayment","label":"isValid","offset":0,"slot":"2","type":"t_bool"}],"numberOfBytes":"96"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/VideoPaymentProxy.sol":{"VideoPaymentProxy":{"abi":[{"inputs":[{"internalType":"address","name":"logic","type":"address"},{"internalType":"address","name":"admin","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"ERC1967InvalidAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"ProxyDeniedAdminAccess","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":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"}],"devdoc":{"details":"Transparent upgradeable proxy for VideoPayment contract","errors":{"AddressEmptyCode(address)":[{"details":"There's no code at `target` (it is not a contract)."}],"ERC1967InvalidAdmin(address)":[{"details":"The `admin` 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."}],"FailedCall()":[{"details":"A call to an address target failed. The target may have reverted."}],"ProxyDeniedAdminAccess()":[{"details":"The proxy caller is the current admin, and can't fallback to the proxy target."}]},"events":{"AdminChanged(address,address)":{"details":"Emitted when the admin account has changed."},"Upgraded(address)":{"details":"Emitted when the implementation is upgraded."}},"kind":"dev","methods":{"constructor":{"details":"Initialize the proxy","params":{"admin":"Address of the proxy admin","data":"Initialization data","logic":"Address of the logic contract"}}},"title":"VideoPaymentProxy","version":1},"evm":{"bytecode":{"functionDebugData":{"@_1246":{"entryPoint":null,"id":1246,"parameterSlots":3,"returnSlots":0},"@_3705":{"entryPoint":null,"id":3705,"parameterSlots":3,"returnSlots":0},"@_782":{"entryPoint":null,"id":782,"parameterSlots":2,"returnSlots":0},"@_checkNonPayable_1088":{"entryPoint":613,"id":1088,"parameterSlots":0,"returnSlots":0},"@_proxyAdmin_1255":{"entryPoint":null,"id":1255,"parameterSlots":0,"returnSlots":1},"@_revert_1896":{"entryPoint":804,"id":1896,"parameterSlots":1,"returnSlots":0},"@_setAdmin_952":{"entryPoint":646,"id":952,"parameterSlots":1,"returnSlots":0},"@_setImplementation_868":{"entryPoint":367,"id":868,"parameterSlots":1,"returnSlots":0},"@changeAdmin_971":{"entryPoint":257,"id":971,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_1814":{"entryPoint":494,"id":1814,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_1984":{"entryPoint":null,"id":1984,"parameterSlots":1,"returnSlots":1},"@getAdmin_921":{"entryPoint":null,"id":921,"parameterSlots":0,"returnSlots":1},"@upgradeToAndCall_904":{"entryPoint":162,"id":904,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_1854":{"entryPoint":709,"id":1854,"parameterSlots":3,"returnSlots":1},"abi_decode_address_fromMemory":{"entryPoint":858,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory":{"entryPoint":944,"id":null,"parameterSlots":2,"returnSlots":3},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1158,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":908,"id":null,"parameterSlots":3,"returnSlots":0},"panic_error_0x41":{"entryPoint":886,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:2475:24","nodeType":"YulBlock","src":"0:2475:24","statements":[{"nativeSrc":"6:3:24","nodeType":"YulBlock","src":"6:3:24","statements":[]},{"body":{"nativeSrc":"74:117:24","nodeType":"YulBlock","src":"74:117:24","statements":[{"nativeSrc":"84:22:24","nodeType":"YulAssignment","src":"84:22:24","value":{"arguments":[{"name":"offset","nativeSrc":"99:6:24","nodeType":"YulIdentifier","src":"99:6:24"}],"functionName":{"name":"mload","nativeSrc":"93:5:24","nodeType":"YulIdentifier","src":"93:5:24"},"nativeSrc":"93:13:24","nodeType":"YulFunctionCall","src":"93:13:24"},"variableNames":[{"name":"value","nativeSrc":"84:5:24","nodeType":"YulIdentifier","src":"84:5:24"}]},{"body":{"nativeSrc":"169:16:24","nodeType":"YulBlock","src":"169:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"178:1:24","nodeType":"YulLiteral","src":"178:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"181:1:24","nodeType":"YulLiteral","src":"181:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"171:6:24","nodeType":"YulIdentifier","src":"171:6:24"},"nativeSrc":"171:12:24","nodeType":"YulFunctionCall","src":"171:12:24"},"nativeSrc":"171:12:24","nodeType":"YulExpressionStatement","src":"171:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"128:5:24","nodeType":"YulIdentifier","src":"128:5:24"},{"arguments":[{"name":"value","nativeSrc":"139:5:24","nodeType":"YulIdentifier","src":"139:5:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"154:3:24","nodeType":"YulLiteral","src":"154:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"159:1:24","nodeType":"YulLiteral","src":"159:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"150:3:24","nodeType":"YulIdentifier","src":"150:3:24"},"nativeSrc":"150:11:24","nodeType":"YulFunctionCall","src":"150:11:24"},{"kind":"number","nativeSrc":"163:1:24","nodeType":"YulLiteral","src":"163:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"146:3:24","nodeType":"YulIdentifier","src":"146:3:24"},"nativeSrc":"146:19:24","nodeType":"YulFunctionCall","src":"146:19:24"}],"functionName":{"name":"and","nativeSrc":"135:3:24","nodeType":"YulIdentifier","src":"135:3:24"},"nativeSrc":"135:31:24","nodeType":"YulFunctionCall","src":"135:31:24"}],"functionName":{"name":"eq","nativeSrc":"125:2:24","nodeType":"YulIdentifier","src":"125:2:24"},"nativeSrc":"125:42:24","nodeType":"YulFunctionCall","src":"125:42:24"}],"functionName":{"name":"iszero","nativeSrc":"118:6:24","nodeType":"YulIdentifier","src":"118:6:24"},"nativeSrc":"118:50:24","nodeType":"YulFunctionCall","src":"118:50:24"},"nativeSrc":"115:70:24","nodeType":"YulIf","src":"115:70:24"}]},"name":"abi_decode_address_fromMemory","nativeSrc":"14:177:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"53:6:24","nodeType":"YulTypedName","src":"53:6:24","type":""}],"returnVariables":[{"name":"value","nativeSrc":"64:5:24","nodeType":"YulTypedName","src":"64:5:24","type":""}],"src":"14:177:24"},{"body":{"nativeSrc":"228:95:24","nodeType":"YulBlock","src":"228:95:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"245:1:24","nodeType":"YulLiteral","src":"245:1:24","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"252:3:24","nodeType":"YulLiteral","src":"252:3:24","type":"","value":"224"},{"kind":"number","nativeSrc":"257:10:24","nodeType":"YulLiteral","src":"257:10:24","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"248:3:24","nodeType":"YulIdentifier","src":"248:3:24"},"nativeSrc":"248:20:24","nodeType":"YulFunctionCall","src":"248:20:24"}],"functionName":{"name":"mstore","nativeSrc":"238:6:24","nodeType":"YulIdentifier","src":"238:6:24"},"nativeSrc":"238:31:24","nodeType":"YulFunctionCall","src":"238:31:24"},"nativeSrc":"238:31:24","nodeType":"YulExpressionStatement","src":"238:31:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"285:1:24","nodeType":"YulLiteral","src":"285:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"288:4:24","nodeType":"YulLiteral","src":"288:4:24","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"278:6:24","nodeType":"YulIdentifier","src":"278:6:24"},"nativeSrc":"278:15:24","nodeType":"YulFunctionCall","src":"278:15:24"},"nativeSrc":"278:15:24","nodeType":"YulExpressionStatement","src":"278:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"309:1:24","nodeType":"YulLiteral","src":"309:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"312:4:24","nodeType":"YulLiteral","src":"312:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"302:6:24","nodeType":"YulIdentifier","src":"302:6:24"},"nativeSrc":"302:15:24","nodeType":"YulFunctionCall","src":"302:15:24"},"nativeSrc":"302:15:24","nodeType":"YulExpressionStatement","src":"302:15:24"}]},"name":"panic_error_0x41","nativeSrc":"196:127:24","nodeType":"YulFunctionDefinition","src":"196:127:24"},{"body":{"nativeSrc":"394:184:24","nodeType":"YulBlock","src":"394:184:24","statements":[{"nativeSrc":"404:10:24","nodeType":"YulVariableDeclaration","src":"404:10:24","value":{"kind":"number","nativeSrc":"413:1:24","nodeType":"YulLiteral","src":"413:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"408:1:24","nodeType":"YulTypedName","src":"408:1:24","type":""}]},{"body":{"nativeSrc":"473:63:24","nodeType":"YulBlock","src":"473:63:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"498:3:24","nodeType":"YulIdentifier","src":"498:3:24"},{"name":"i","nativeSrc":"503:1:24","nodeType":"YulIdentifier","src":"503:1:24"}],"functionName":{"name":"add","nativeSrc":"494:3:24","nodeType":"YulIdentifier","src":"494:3:24"},"nativeSrc":"494:11:24","nodeType":"YulFunctionCall","src":"494:11:24"},{"arguments":[{"arguments":[{"name":"src","nativeSrc":"517:3:24","nodeType":"YulIdentifier","src":"517:3:24"},{"name":"i","nativeSrc":"522:1:24","nodeType":"YulIdentifier","src":"522:1:24"}],"functionName":{"name":"add","nativeSrc":"513:3:24","nodeType":"YulIdentifier","src":"513:3:24"},"nativeSrc":"513:11:24","nodeType":"YulFunctionCall","src":"513:11:24"}],"functionName":{"name":"mload","nativeSrc":"507:5:24","nodeType":"YulIdentifier","src":"507:5:24"},"nativeSrc":"507:18:24","nodeType":"YulFunctionCall","src":"507:18:24"}],"functionName":{"name":"mstore","nativeSrc":"487:6:24","nodeType":"YulIdentifier","src":"487:6:24"},"nativeSrc":"487:39:24","nodeType":"YulFunctionCall","src":"487:39:24"},"nativeSrc":"487:39:24","nodeType":"YulExpressionStatement","src":"487:39:24"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"434:1:24","nodeType":"YulIdentifier","src":"434:1:24"},{"name":"length","nativeSrc":"437:6:24","nodeType":"YulIdentifier","src":"437:6:24"}],"functionName":{"name":"lt","nativeSrc":"431:2:24","nodeType":"YulIdentifier","src":"431:2:24"},"nativeSrc":"431:13:24","nodeType":"YulFunctionCall","src":"431:13:24"},"nativeSrc":"423:113:24","nodeType":"YulForLoop","post":{"nativeSrc":"445:19:24","nodeType":"YulBlock","src":"445:19:24","statements":[{"nativeSrc":"447:15:24","nodeType":"YulAssignment","src":"447:15:24","value":{"arguments":[{"name":"i","nativeSrc":"456:1:24","nodeType":"YulIdentifier","src":"456:1:24"},{"kind":"number","nativeSrc":"459:2:24","nodeType":"YulLiteral","src":"459:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"452:3:24","nodeType":"YulIdentifier","src":"452:3:24"},"nativeSrc":"452:10:24","nodeType":"YulFunctionCall","src":"452:10:24"},"variableNames":[{"name":"i","nativeSrc":"447:1:24","nodeType":"YulIdentifier","src":"447:1:24"}]}]},"pre":{"nativeSrc":"427:3:24","nodeType":"YulBlock","src":"427:3:24","statements":[]},"src":"423:113:24"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nativeSrc":"556:3:24","nodeType":"YulIdentifier","src":"556:3:24"},{"name":"length","nativeSrc":"561:6:24","nodeType":"YulIdentifier","src":"561:6:24"}],"functionName":{"name":"add","nativeSrc":"552:3:24","nodeType":"YulIdentifier","src":"552:3:24"},"nativeSrc":"552:16:24","nodeType":"YulFunctionCall","src":"552:16:24"},{"kind":"number","nativeSrc":"570:1:24","nodeType":"YulLiteral","src":"570:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"545:6:24","nodeType":"YulIdentifier","src":"545:6:24"},"nativeSrc":"545:27:24","nodeType":"YulFunctionCall","src":"545:27:24"},"nativeSrc":"545:27:24","nodeType":"YulExpressionStatement","src":"545:27:24"}]},"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"328:250:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nativeSrc":"372:3:24","nodeType":"YulTypedName","src":"372:3:24","type":""},{"name":"dst","nativeSrc":"377:3:24","nodeType":"YulTypedName","src":"377:3:24","type":""},{"name":"length","nativeSrc":"382:6:24","nodeType":"YulTypedName","src":"382:6:24","type":""}],"src":"328:250:24"},{"body":{"nativeSrc":"707:961:24","nodeType":"YulBlock","src":"707:961:24","statements":[{"body":{"nativeSrc":"753:16:24","nodeType":"YulBlock","src":"753:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"762:1:24","nodeType":"YulLiteral","src":"762:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"765:1:24","nodeType":"YulLiteral","src":"765:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"755:6:24","nodeType":"YulIdentifier","src":"755:6:24"},"nativeSrc":"755:12:24","nodeType":"YulFunctionCall","src":"755:12:24"},"nativeSrc":"755:12:24","nodeType":"YulExpressionStatement","src":"755:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"728:7:24","nodeType":"YulIdentifier","src":"728:7:24"},{"name":"headStart","nativeSrc":"737:9:24","nodeType":"YulIdentifier","src":"737:9:24"}],"functionName":{"name":"sub","nativeSrc":"724:3:24","nodeType":"YulIdentifier","src":"724:3:24"},"nativeSrc":"724:23:24","nodeType":"YulFunctionCall","src":"724:23:24"},{"kind":"number","nativeSrc":"749:2:24","nodeType":"YulLiteral","src":"749:2:24","type":"","value":"96"}],"functionName":{"name":"slt","nativeSrc":"720:3:24","nodeType":"YulIdentifier","src":"720:3:24"},"nativeSrc":"720:32:24","nodeType":"YulFunctionCall","src":"720:32:24"},"nativeSrc":"717:52:24","nodeType":"YulIf","src":"717:52:24"},{"nativeSrc":"778:50:24","nodeType":"YulAssignment","src":"778:50:24","value":{"arguments":[{"name":"headStart","nativeSrc":"818:9:24","nodeType":"YulIdentifier","src":"818:9:24"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"788:29:24","nodeType":"YulIdentifier","src":"788:29:24"},"nativeSrc":"788:40:24","nodeType":"YulFunctionCall","src":"788:40:24"},"variableNames":[{"name":"value0","nativeSrc":"778:6:24","nodeType":"YulIdentifier","src":"778:6:24"}]},{"nativeSrc":"837:59:24","nodeType":"YulAssignment","src":"837:59:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"881:9:24","nodeType":"YulIdentifier","src":"881:9:24"},{"kind":"number","nativeSrc":"892:2:24","nodeType":"YulLiteral","src":"892:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"877:3:24","nodeType":"YulIdentifier","src":"877:3:24"},"nativeSrc":"877:18:24","nodeType":"YulFunctionCall","src":"877:18:24"}],"functionName":{"name":"abi_decode_address_fromMemory","nativeSrc":"847:29:24","nodeType":"YulIdentifier","src":"847:29:24"},"nativeSrc":"847:49:24","nodeType":"YulFunctionCall","src":"847:49:24"},"variableNames":[{"name":"value1","nativeSrc":"837:6:24","nodeType":"YulIdentifier","src":"837:6:24"}]},{"nativeSrc":"905:39:24","nodeType":"YulVariableDeclaration","src":"905:39:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"929:9:24","nodeType":"YulIdentifier","src":"929:9:24"},{"kind":"number","nativeSrc":"940:2:24","nodeType":"YulLiteral","src":"940:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"925:3:24","nodeType":"YulIdentifier","src":"925:3:24"},"nativeSrc":"925:18:24","nodeType":"YulFunctionCall","src":"925:18:24"}],"functionName":{"name":"mload","nativeSrc":"919:5:24","nodeType":"YulIdentifier","src":"919:5:24"},"nativeSrc":"919:25:24","nodeType":"YulFunctionCall","src":"919:25:24"},"variables":[{"name":"offset","nativeSrc":"909:6:24","nodeType":"YulTypedName","src":"909:6:24","type":""}]},{"body":{"nativeSrc":"987:16:24","nodeType":"YulBlock","src":"987:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"996:1:24","nodeType":"YulLiteral","src":"996:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"999:1:24","nodeType":"YulLiteral","src":"999:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"989:6:24","nodeType":"YulIdentifier","src":"989:6:24"},"nativeSrc":"989:12:24","nodeType":"YulFunctionCall","src":"989:12:24"},"nativeSrc":"989:12:24","nodeType":"YulExpressionStatement","src":"989:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"959:6:24","nodeType":"YulIdentifier","src":"959:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"975:2:24","nodeType":"YulLiteral","src":"975:2:24","type":"","value":"64"},{"kind":"number","nativeSrc":"979:1:24","nodeType":"YulLiteral","src":"979:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"971:3:24","nodeType":"YulIdentifier","src":"971:3:24"},"nativeSrc":"971:10:24","nodeType":"YulFunctionCall","src":"971:10:24"},{"kind":"number","nativeSrc":"983:1:24","nodeType":"YulLiteral","src":"983:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"967:3:24","nodeType":"YulIdentifier","src":"967:3:24"},"nativeSrc":"967:18:24","nodeType":"YulFunctionCall","src":"967:18:24"}],"functionName":{"name":"gt","nativeSrc":"956:2:24","nodeType":"YulIdentifier","src":"956:2:24"},"nativeSrc":"956:30:24","nodeType":"YulFunctionCall","src":"956:30:24"},"nativeSrc":"953:50:24","nodeType":"YulIf","src":"953:50:24"},{"nativeSrc":"1012:32:24","nodeType":"YulVariableDeclaration","src":"1012:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"1026:9:24","nodeType":"YulIdentifier","src":"1026:9:24"},{"name":"offset","nativeSrc":"1037:6:24","nodeType":"YulIdentifier","src":"1037:6:24"}],"functionName":{"name":"add","nativeSrc":"1022:3:24","nodeType":"YulIdentifier","src":"1022:3:24"},"nativeSrc":"1022:22:24","nodeType":"YulFunctionCall","src":"1022:22:24"},"variables":[{"name":"_1","nativeSrc":"1016:2:24","nodeType":"YulTypedName","src":"1016:2:24","type":""}]},{"body":{"nativeSrc":"1092:16:24","nodeType":"YulBlock","src":"1092:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1101:1:24","nodeType":"YulLiteral","src":"1101:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1104:1:24","nodeType":"YulLiteral","src":"1104:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1094:6:24","nodeType":"YulIdentifier","src":"1094:6:24"},"nativeSrc":"1094:12:24","nodeType":"YulFunctionCall","src":"1094:12:24"},"nativeSrc":"1094:12:24","nodeType":"YulExpressionStatement","src":"1094:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1071:2:24","nodeType":"YulIdentifier","src":"1071:2:24"},{"kind":"number","nativeSrc":"1075:4:24","nodeType":"YulLiteral","src":"1075:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1067:3:24","nodeType":"YulIdentifier","src":"1067:3:24"},"nativeSrc":"1067:13:24","nodeType":"YulFunctionCall","src":"1067:13:24"},{"name":"dataEnd","nativeSrc":"1082:7:24","nodeType":"YulIdentifier","src":"1082:7:24"}],"functionName":{"name":"slt","nativeSrc":"1063:3:24","nodeType":"YulIdentifier","src":"1063:3:24"},"nativeSrc":"1063:27:24","nodeType":"YulFunctionCall","src":"1063:27:24"}],"functionName":{"name":"iszero","nativeSrc":"1056:6:24","nodeType":"YulIdentifier","src":"1056:6:24"},"nativeSrc":"1056:35:24","nodeType":"YulFunctionCall","src":"1056:35:24"},"nativeSrc":"1053:55:24","nodeType":"YulIf","src":"1053:55:24"},{"nativeSrc":"1117:23:24","nodeType":"YulVariableDeclaration","src":"1117:23:24","value":{"arguments":[{"name":"_1","nativeSrc":"1137:2:24","nodeType":"YulIdentifier","src":"1137:2:24"}],"functionName":{"name":"mload","nativeSrc":"1131:5:24","nodeType":"YulIdentifier","src":"1131:5:24"},"nativeSrc":"1131:9:24","nodeType":"YulFunctionCall","src":"1131:9:24"},"variables":[{"name":"length","nativeSrc":"1121:6:24","nodeType":"YulTypedName","src":"1121:6:24","type":""}]},{"body":{"nativeSrc":"1183:22:24","nodeType":"YulBlock","src":"1183:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1185:16:24","nodeType":"YulIdentifier","src":"1185:16:24"},"nativeSrc":"1185:18:24","nodeType":"YulFunctionCall","src":"1185:18:24"},"nativeSrc":"1185:18:24","nodeType":"YulExpressionStatement","src":"1185:18:24"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1155:6:24","nodeType":"YulIdentifier","src":"1155:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1171:2:24","nodeType":"YulLiteral","src":"1171:2:24","type":"","value":"64"},{"kind":"number","nativeSrc":"1175:1:24","nodeType":"YulLiteral","src":"1175:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1167:3:24","nodeType":"YulIdentifier","src":"1167:3:24"},"nativeSrc":"1167:10:24","nodeType":"YulFunctionCall","src":"1167:10:24"},{"kind":"number","nativeSrc":"1179:1:24","nodeType":"YulLiteral","src":"1179:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1163:3:24","nodeType":"YulIdentifier","src":"1163:3:24"},"nativeSrc":"1163:18:24","nodeType":"YulFunctionCall","src":"1163:18:24"}],"functionName":{"name":"gt","nativeSrc":"1152:2:24","nodeType":"YulIdentifier","src":"1152:2:24"},"nativeSrc":"1152:30:24","nodeType":"YulFunctionCall","src":"1152:30:24"},"nativeSrc":"1149:56:24","nodeType":"YulIf","src":"1149:56:24"},{"nativeSrc":"1214:23:24","nodeType":"YulVariableDeclaration","src":"1214:23:24","value":{"arguments":[{"kind":"number","nativeSrc":"1234:2:24","nodeType":"YulLiteral","src":"1234:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1228:5:24","nodeType":"YulIdentifier","src":"1228:5:24"},"nativeSrc":"1228:9:24","nodeType":"YulFunctionCall","src":"1228:9:24"},"variables":[{"name":"memPtr","nativeSrc":"1218:6:24","nodeType":"YulTypedName","src":"1218:6:24","type":""}]},{"nativeSrc":"1246:85:24","nodeType":"YulVariableDeclaration","src":"1246:85:24","value":{"arguments":[{"name":"memPtr","nativeSrc":"1268:6:24","nodeType":"YulIdentifier","src":"1268:6:24"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1292:6:24","nodeType":"YulIdentifier","src":"1292:6:24"},{"kind":"number","nativeSrc":"1300:4:24","nodeType":"YulLiteral","src":"1300:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1288:3:24","nodeType":"YulIdentifier","src":"1288:3:24"},"nativeSrc":"1288:17:24","nodeType":"YulFunctionCall","src":"1288:17:24"},{"arguments":[{"kind":"number","nativeSrc":"1311:2:24","nodeType":"YulLiteral","src":"1311:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1307:3:24","nodeType":"YulIdentifier","src":"1307:3:24"},"nativeSrc":"1307:7:24","nodeType":"YulFunctionCall","src":"1307:7:24"}],"functionName":{"name":"and","nativeSrc":"1284:3:24","nodeType":"YulIdentifier","src":"1284:3:24"},"nativeSrc":"1284:31:24","nodeType":"YulFunctionCall","src":"1284:31:24"},{"kind":"number","nativeSrc":"1317:2:24","nodeType":"YulLiteral","src":"1317:2:24","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"1280:3:24","nodeType":"YulIdentifier","src":"1280:3:24"},"nativeSrc":"1280:40:24","nodeType":"YulFunctionCall","src":"1280:40:24"},{"arguments":[{"kind":"number","nativeSrc":"1326:2:24","nodeType":"YulLiteral","src":"1326:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1322:3:24","nodeType":"YulIdentifier","src":"1322:3:24"},"nativeSrc":"1322:7:24","nodeType":"YulFunctionCall","src":"1322:7:24"}],"functionName":{"name":"and","nativeSrc":"1276:3:24","nodeType":"YulIdentifier","src":"1276:3:24"},"nativeSrc":"1276:54:24","nodeType":"YulFunctionCall","src":"1276:54:24"}],"functionName":{"name":"add","nativeSrc":"1264:3:24","nodeType":"YulIdentifier","src":"1264:3:24"},"nativeSrc":"1264:67:24","nodeType":"YulFunctionCall","src":"1264:67:24"},"variables":[{"name":"newFreePtr","nativeSrc":"1250:10:24","nodeType":"YulTypedName","src":"1250:10:24","type":""}]},{"body":{"nativeSrc":"1406:22:24","nodeType":"YulBlock","src":"1406:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1408:16:24","nodeType":"YulIdentifier","src":"1408:16:24"},"nativeSrc":"1408:18:24","nodeType":"YulFunctionCall","src":"1408:18:24"},"nativeSrc":"1408:18:24","nodeType":"YulExpressionStatement","src":"1408:18:24"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1349:10:24","nodeType":"YulIdentifier","src":"1349:10:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1369:2:24","nodeType":"YulLiteral","src":"1369:2:24","type":"","value":"64"},{"kind":"number","nativeSrc":"1373:1:24","nodeType":"YulLiteral","src":"1373:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1365:3:24","nodeType":"YulIdentifier","src":"1365:3:24"},"nativeSrc":"1365:10:24","nodeType":"YulFunctionCall","src":"1365:10:24"},{"kind":"number","nativeSrc":"1377:1:24","nodeType":"YulLiteral","src":"1377:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1361:3:24","nodeType":"YulIdentifier","src":"1361:3:24"},"nativeSrc":"1361:18:24","nodeType":"YulFunctionCall","src":"1361:18:24"}],"functionName":{"name":"gt","nativeSrc":"1346:2:24","nodeType":"YulIdentifier","src":"1346:2:24"},"nativeSrc":"1346:34:24","nodeType":"YulFunctionCall","src":"1346:34:24"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1385:10:24","nodeType":"YulIdentifier","src":"1385:10:24"},{"name":"memPtr","nativeSrc":"1397:6:24","nodeType":"YulIdentifier","src":"1397:6:24"}],"functionName":{"name":"lt","nativeSrc":"1382:2:24","nodeType":"YulIdentifier","src":"1382:2:24"},"nativeSrc":"1382:22:24","nodeType":"YulFunctionCall","src":"1382:22:24"}],"functionName":{"name":"or","nativeSrc":"1343:2:24","nodeType":"YulIdentifier","src":"1343:2:24"},"nativeSrc":"1343:62:24","nodeType":"YulFunctionCall","src":"1343:62:24"},"nativeSrc":"1340:88:24","nodeType":"YulIf","src":"1340:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1444:2:24","nodeType":"YulLiteral","src":"1444:2:24","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1448:10:24","nodeType":"YulIdentifier","src":"1448:10:24"}],"functionName":{"name":"mstore","nativeSrc":"1437:6:24","nodeType":"YulIdentifier","src":"1437:6:24"},"nativeSrc":"1437:22:24","nodeType":"YulFunctionCall","src":"1437:22:24"},"nativeSrc":"1437:22:24","nodeType":"YulExpressionStatement","src":"1437:22:24"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1475:6:24","nodeType":"YulIdentifier","src":"1475:6:24"},{"name":"length","nativeSrc":"1483:6:24","nodeType":"YulIdentifier","src":"1483:6:24"}],"functionName":{"name":"mstore","nativeSrc":"1468:6:24","nodeType":"YulIdentifier","src":"1468:6:24"},"nativeSrc":"1468:22:24","nodeType":"YulFunctionCall","src":"1468:22:24"},"nativeSrc":"1468:22:24","nodeType":"YulExpressionStatement","src":"1468:22:24"},{"body":{"nativeSrc":"1540:16:24","nodeType":"YulBlock","src":"1540:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1549:1:24","nodeType":"YulLiteral","src":"1549:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1552:1:24","nodeType":"YulLiteral","src":"1552:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1542:6:24","nodeType":"YulIdentifier","src":"1542:6:24"},"nativeSrc":"1542:12:24","nodeType":"YulFunctionCall","src":"1542:12:24"},"nativeSrc":"1542:12:24","nodeType":"YulExpressionStatement","src":"1542:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1513:2:24","nodeType":"YulIdentifier","src":"1513:2:24"},{"name":"length","nativeSrc":"1517:6:24","nodeType":"YulIdentifier","src":"1517:6:24"}],"functionName":{"name":"add","nativeSrc":"1509:3:24","nodeType":"YulIdentifier","src":"1509:3:24"},"nativeSrc":"1509:15:24","nodeType":"YulFunctionCall","src":"1509:15:24"},{"kind":"number","nativeSrc":"1526:2:24","nodeType":"YulLiteral","src":"1526:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1505:3:24","nodeType":"YulIdentifier","src":"1505:3:24"},"nativeSrc":"1505:24:24","nodeType":"YulFunctionCall","src":"1505:24:24"},{"name":"dataEnd","nativeSrc":"1531:7:24","nodeType":"YulIdentifier","src":"1531:7:24"}],"functionName":{"name":"gt","nativeSrc":"1502:2:24","nodeType":"YulIdentifier","src":"1502:2:24"},"nativeSrc":"1502:37:24","nodeType":"YulFunctionCall","src":"1502:37:24"},"nativeSrc":"1499:57:24","nodeType":"YulIf","src":"1499:57:24"},{"expression":{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1604:2:24","nodeType":"YulIdentifier","src":"1604:2:24"},{"kind":"number","nativeSrc":"1608:2:24","nodeType":"YulLiteral","src":"1608:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1600:3:24","nodeType":"YulIdentifier","src":"1600:3:24"},"nativeSrc":"1600:11:24","nodeType":"YulFunctionCall","src":"1600:11:24"},{"arguments":[{"name":"memPtr","nativeSrc":"1617:6:24","nodeType":"YulIdentifier","src":"1617:6:24"},{"kind":"number","nativeSrc":"1625:2:24","nodeType":"YulLiteral","src":"1625:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1613:3:24","nodeType":"YulIdentifier","src":"1613:3:24"},"nativeSrc":"1613:15:24","nodeType":"YulFunctionCall","src":"1613:15:24"},{"name":"length","nativeSrc":"1630:6:24","nodeType":"YulIdentifier","src":"1630:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"1565:34:24","nodeType":"YulIdentifier","src":"1565:34:24"},"nativeSrc":"1565:72:24","nodeType":"YulFunctionCall","src":"1565:72:24"},"nativeSrc":"1565:72:24","nodeType":"YulExpressionStatement","src":"1565:72:24"},{"nativeSrc":"1646:16:24","nodeType":"YulAssignment","src":"1646:16:24","value":{"name":"memPtr","nativeSrc":"1656:6:24","nodeType":"YulIdentifier","src":"1656:6:24"},"variableNames":[{"name":"value2","nativeSrc":"1646:6:24","nodeType":"YulIdentifier","src":"1646:6:24"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory","nativeSrc":"583:1085:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"657:9:24","nodeType":"YulTypedName","src":"657:9:24","type":""},{"name":"dataEnd","nativeSrc":"668:7:24","nodeType":"YulTypedName","src":"668:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"680:6:24","nodeType":"YulTypedName","src":"680:6:24","type":""},{"name":"value1","nativeSrc":"688:6:24","nodeType":"YulTypedName","src":"688:6:24","type":""},{"name":"value2","nativeSrc":"696:6:24","nodeType":"YulTypedName","src":"696:6:24","type":""}],"src":"583:1085:24"},{"body":{"nativeSrc":"1774:102:24","nodeType":"YulBlock","src":"1774:102:24","statements":[{"nativeSrc":"1784:26:24","nodeType":"YulAssignment","src":"1784:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"1796:9:24","nodeType":"YulIdentifier","src":"1796:9:24"},{"kind":"number","nativeSrc":"1807:2:24","nodeType":"YulLiteral","src":"1807:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1792:3:24","nodeType":"YulIdentifier","src":"1792:3:24"},"nativeSrc":"1792:18:24","nodeType":"YulFunctionCall","src":"1792:18:24"},"variableNames":[{"name":"tail","nativeSrc":"1784:4:24","nodeType":"YulIdentifier","src":"1784:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1826:9:24","nodeType":"YulIdentifier","src":"1826:9:24"},{"arguments":[{"name":"value0","nativeSrc":"1841:6:24","nodeType":"YulIdentifier","src":"1841:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1857:3:24","nodeType":"YulLiteral","src":"1857:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"1862:1:24","nodeType":"YulLiteral","src":"1862:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1853:3:24","nodeType":"YulIdentifier","src":"1853:3:24"},"nativeSrc":"1853:11:24","nodeType":"YulFunctionCall","src":"1853:11:24"},{"kind":"number","nativeSrc":"1866:1:24","nodeType":"YulLiteral","src":"1866:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1849:3:24","nodeType":"YulIdentifier","src":"1849:3:24"},"nativeSrc":"1849:19:24","nodeType":"YulFunctionCall","src":"1849:19:24"}],"functionName":{"name":"and","nativeSrc":"1837:3:24","nodeType":"YulIdentifier","src":"1837:3:24"},"nativeSrc":"1837:32:24","nodeType":"YulFunctionCall","src":"1837:32:24"}],"functionName":{"name":"mstore","nativeSrc":"1819:6:24","nodeType":"YulIdentifier","src":"1819:6:24"},"nativeSrc":"1819:51:24","nodeType":"YulFunctionCall","src":"1819:51:24"},"nativeSrc":"1819:51:24","nodeType":"YulExpressionStatement","src":"1819:51:24"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1673:203:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1743:9:24","nodeType":"YulTypedName","src":"1743:9:24","type":""},{"name":"value0","nativeSrc":"1754:6:24","nodeType":"YulTypedName","src":"1754:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1765:4:24","nodeType":"YulTypedName","src":"1765:4:24","type":""}],"src":"1673:203:24"},{"body":{"nativeSrc":"2010:171:24","nodeType":"YulBlock","src":"2010:171:24","statements":[{"nativeSrc":"2020:26:24","nodeType":"YulAssignment","src":"2020:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"2032:9:24","nodeType":"YulIdentifier","src":"2032:9:24"},{"kind":"number","nativeSrc":"2043:2:24","nodeType":"YulLiteral","src":"2043:2:24","type":"","value":"64"}],"functionName":{"name":"add","nativeSrc":"2028:3:24","nodeType":"YulIdentifier","src":"2028:3:24"},"nativeSrc":"2028:18:24","nodeType":"YulFunctionCall","src":"2028:18:24"},"variableNames":[{"name":"tail","nativeSrc":"2020:4:24","nodeType":"YulIdentifier","src":"2020:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"2062:9:24","nodeType":"YulIdentifier","src":"2062:9:24"},{"arguments":[{"name":"value0","nativeSrc":"2077:6:24","nodeType":"YulIdentifier","src":"2077:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2093:3:24","nodeType":"YulLiteral","src":"2093:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"2098:1:24","nodeType":"YulLiteral","src":"2098:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2089:3:24","nodeType":"YulIdentifier","src":"2089:3:24"},"nativeSrc":"2089:11:24","nodeType":"YulFunctionCall","src":"2089:11:24"},{"kind":"number","nativeSrc":"2102:1:24","nodeType":"YulLiteral","src":"2102:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2085:3:24","nodeType":"YulIdentifier","src":"2085:3:24"},"nativeSrc":"2085:19:24","nodeType":"YulFunctionCall","src":"2085:19:24"}],"functionName":{"name":"and","nativeSrc":"2073:3:24","nodeType":"YulIdentifier","src":"2073:3:24"},"nativeSrc":"2073:32:24","nodeType":"YulFunctionCall","src":"2073:32:24"}],"functionName":{"name":"mstore","nativeSrc":"2055:6:24","nodeType":"YulIdentifier","src":"2055:6:24"},"nativeSrc":"2055:51:24","nodeType":"YulFunctionCall","src":"2055:51:24"},"nativeSrc":"2055:51:24","nodeType":"YulExpressionStatement","src":"2055:51:24"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"2126:9:24","nodeType":"YulIdentifier","src":"2126:9:24"},{"kind":"number","nativeSrc":"2137:2:24","nodeType":"YulLiteral","src":"2137:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"2122:3:24","nodeType":"YulIdentifier","src":"2122:3:24"},"nativeSrc":"2122:18:24","nodeType":"YulFunctionCall","src":"2122:18:24"},{"arguments":[{"name":"value1","nativeSrc":"2146:6:24","nodeType":"YulIdentifier","src":"2146:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"2162:3:24","nodeType":"YulLiteral","src":"2162:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"2167:1:24","nodeType":"YulLiteral","src":"2167:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"2158:3:24","nodeType":"YulIdentifier","src":"2158:3:24"},"nativeSrc":"2158:11:24","nodeType":"YulFunctionCall","src":"2158:11:24"},{"kind":"number","nativeSrc":"2171:1:24","nodeType":"YulLiteral","src":"2171:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"2154:3:24","nodeType":"YulIdentifier","src":"2154:3:24"},"nativeSrc":"2154:19:24","nodeType":"YulFunctionCall","src":"2154:19:24"}],"functionName":{"name":"and","nativeSrc":"2142:3:24","nodeType":"YulIdentifier","src":"2142:3:24"},"nativeSrc":"2142:32:24","nodeType":"YulFunctionCall","src":"2142:32:24"}],"functionName":{"name":"mstore","nativeSrc":"2115:6:24","nodeType":"YulIdentifier","src":"2115:6:24"},"nativeSrc":"2115:60:24","nodeType":"YulFunctionCall","src":"2115:60:24"},"nativeSrc":"2115:60:24","nodeType":"YulExpressionStatement","src":"2115:60:24"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nativeSrc":"1881:300:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1971:9:24","nodeType":"YulTypedName","src":"1971:9:24","type":""},{"name":"value1","nativeSrc":"1982:6:24","nodeType":"YulTypedName","src":"1982:6:24","type":""},{"name":"value0","nativeSrc":"1990:6:24","nodeType":"YulTypedName","src":"1990:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"2001:4:24","nodeType":"YulTypedName","src":"2001:4:24","type":""}],"src":"1881:300:24"},{"body":{"nativeSrc":"2323:150:24","nodeType":"YulBlock","src":"2323:150:24","statements":[{"nativeSrc":"2333:27:24","nodeType":"YulVariableDeclaration","src":"2333:27:24","value":{"arguments":[{"name":"value0","nativeSrc":"2353:6:24","nodeType":"YulIdentifier","src":"2353:6:24"}],"functionName":{"name":"mload","nativeSrc":"2347:5:24","nodeType":"YulIdentifier","src":"2347:5:24"},"nativeSrc":"2347:13:24","nodeType":"YulFunctionCall","src":"2347:13:24"},"variables":[{"name":"length","nativeSrc":"2337:6:24","nodeType":"YulTypedName","src":"2337:6:24","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"2408:6:24","nodeType":"YulIdentifier","src":"2408:6:24"},{"kind":"number","nativeSrc":"2416:4:24","nodeType":"YulLiteral","src":"2416:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2404:3:24","nodeType":"YulIdentifier","src":"2404:3:24"},"nativeSrc":"2404:17:24","nodeType":"YulFunctionCall","src":"2404:17:24"},{"name":"pos","nativeSrc":"2423:3:24","nodeType":"YulIdentifier","src":"2423:3:24"},{"name":"length","nativeSrc":"2428:6:24","nodeType":"YulIdentifier","src":"2428:6:24"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nativeSrc":"2369:34:24","nodeType":"YulIdentifier","src":"2369:34:24"},"nativeSrc":"2369:66:24","nodeType":"YulFunctionCall","src":"2369:66:24"},"nativeSrc":"2369:66:24","nodeType":"YulExpressionStatement","src":"2369:66:24"},{"nativeSrc":"2444:23:24","nodeType":"YulAssignment","src":"2444:23:24","value":{"arguments":[{"name":"pos","nativeSrc":"2455:3:24","nodeType":"YulIdentifier","src":"2455:3:24"},{"name":"length","nativeSrc":"2460:6:24","nodeType":"YulIdentifier","src":"2460:6:24"}],"functionName":{"name":"add","nativeSrc":"2451:3:24","nodeType":"YulIdentifier","src":"2451:3:24"},"nativeSrc":"2451:16:24","nodeType":"YulFunctionCall","src":"2451:16:24"},"variableNames":[{"name":"end","nativeSrc":"2444:3:24","nodeType":"YulIdentifier","src":"2444:3:24"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"2186:287:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"2299:3:24","nodeType":"YulTypedName","src":"2299:3:24","type":""},{"name":"value0","nativeSrc":"2304:6:24","nodeType":"YulTypedName","src":"2304:6:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"2315:3:24","nodeType":"YulTypedName","src":"2315:3:24","type":""}],"src":"2186:287:24"}]},"contents":"{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n        let offset := mload(add(headStart, 64))\n        if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := mload(_1)\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory_with_cleanup(add(_1, 32), add(memPtr, 32), length)\n        value2 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n}","id":24,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60a060405234801561001057600080fd5b50604051610e97380380610e9783398101604081905261002f916103b0565b828282828161003e82826100a2565b50508160405161004d9061034d565b6001600160a01b039091168152602001604051809103906000f080158015610079573d6000803e3d6000fd5b506001600160a01b031660805261009761009260805190565b610101565b5050505050506104a2565b6100ab8261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100f5576100f082826101ee565b505050565b6100fd610265565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610141600080516020610e77833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161016c81610286565b50565b806001600160a01b03163b6000036101aa57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b03168460405161020b9190610486565b600060405180830381855af49150503d8060008114610246576040519150601f19603f3d011682016040523d82523d6000602084013e61024b565b606091505b50909250905061025c8583836102c5565b95945050505050565b34156102845760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b0381166102b057604051633173bdd160e11b8152600060048201526024016101a1565b80600080516020610e778339815191526101cd565b6060826102da576102d582610324565b61031d565b81511580156102f157506001600160a01b0384163b155b1561031a57604051639996b31560e01b81526001600160a01b03851660048201526024016101a1565b50805b9392505050565b8051156103345780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61052c8061094b83390190565b80516001600160a01b038116811461037157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103a757818101518382015260200161038f565b50506000910152565b6000806000606084860312156103c557600080fd5b6103ce8461035a565b92506103dc6020850161035a565b60408501519092506001600160401b038111156103f857600080fd5b8401601f8101861361040957600080fd5b80516001600160401b0381111561042257610422610376565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045057610450610376565b60405281815282820160200188101561046857600080fd5b61047982602083016020860161038c565b8093505050509250925092565b6000825161049881846020870161038c565b9190910192915050565b60805161048f6104bc60003960006010015261048f6000f3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007b576000356001600160e01b03191663278f794360e11b14610071576040516334ad5dbb60e21b815260040160405180910390fd5b610079610083565b565b6100796100b2565b6000806100933660048184610312565b8101906100a09190610352565b915091506100ae82826100c2565b5050565b6100796100bd61011d565b610155565b6100cb82610179565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101155761011082826101f5565b505050565b6100ae61026b565b60006101507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610174573d6000f35b3d6000fd5b806001600160a01b03163b6000036101b457604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610212919061042a565b600060405180830381855af49150503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b509150915061026285838361028a565b95945050505050565b34156100795760405163b398979f60e01b815260040160405180910390fd5b60608261029f5761029a826102e9565b6102e2565b81511580156102b657506001600160a01b0384163b155b156102df57604051639996b31560e01b81526001600160a01b03851660048201526024016101ab565b50805b9392505050565b8051156102f95780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000808585111561032257600080fd5b8386111561032f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561036557600080fd5b82356001600160a01b038116811461037c57600080fd5b9150602083013567ffffffffffffffff81111561039857600080fd5b8301601f810185136103a957600080fd5b803567ffffffffffffffff8111156103c3576103c361033c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103f2576103f261033c565b60405281815282820160200187101561040a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b8181101561044b5760208186018101518583015201610431565b50600092019182525091905056fea2646970667358221220918cb8ec6aa319cea3007a73b49dd637e38af06e17cb5062bcb157cdeb56e85364736f6c634300081c0033608060405234801561001057600080fd5b5060405161052c38038061052c83398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b61042f806100fd6000396000f3fe60806040526004361061004a5760003560e01c8063715018a61461004f5780638da5cb5b146100665780639623609d14610093578063ad3cb1cc146100a6578063f2fde38b146100e4575b600080fd5b34801561005b57600080fd5b50610064610104565b005b34801561007257600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b6100646100a1366004610272565b610118565b3480156100b257600080fd5b506100d7604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008a9190610396565b3480156100f057600080fd5b506100646100ff3660046103b0565b610187565b61010c6101ca565b61011660006101f7565b565b6101206101ca565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061015090869086906004016103cd565b6000604051808303818588803b15801561016957600080fd5b505af115801561017d573d6000803e3d6000fd5b5050505050505050565b61018f6101ca565b6001600160a01b0381166101be57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101c7816101f7565b50565b6000546001600160a01b031633146101165760405163118cdaa760e01b81523360048201526024016101b5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101c757600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561028757600080fd5b833561029281610247565b925060208401356102a281610247565b9150604084013567ffffffffffffffff8111156102be57600080fd5b8401601f810186136102cf57600080fd5b803567ffffffffffffffff8111156102e9576102e961025c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103185761031861025c565b60405281815282820160200188101561033057600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000815180845260005b818110156103765760208185018101518683018201520161035a565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006103a96020830184610350565b9392505050565b6000602082840312156103c257600080fd5b81356103a981610247565b6001600160a01b03831681526040602082018190526000906103f190830184610350565b94935050505056fea26469706673582212200ab660e4866fa7d104c2d56d6c7e80fcc5bee8c6d8783e1cb220fcfe8ec1870c64736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xE97 CODESIZE SUB DUP1 PUSH2 0xE97 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x3B0 JUMP JUMPDEST DUP3 DUP3 DUP3 DUP3 DUP2 PUSH2 0x3E DUP3 DUP3 PUSH2 0xA2 JUMP JUMPDEST POP POP DUP2 PUSH1 0x40 MLOAD PUSH2 0x4D SWAP1 PUSH2 0x34D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x79 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE PUSH2 0x97 PUSH2 0x92 PUSH1 0x80 MLOAD SWAP1 JUMP JUMPDEST PUSH2 0x101 JUMP JUMPDEST POP POP POP POP POP POP PUSH2 0x4A2 JUMP JUMPDEST PUSH2 0xAB DUP3 PUSH2 0x16F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0xF5 JUMPI PUSH2 0xF0 DUP3 DUP3 PUSH2 0x1EE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xFD PUSH2 0x265 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x7E644D79422F17C01E4894B5F4F588D331EBFA28653D42AE832DC59E38C9798F PUSH2 0x141 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xE77 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x16C DUP2 PUSH2 0x286 JUMP JUMPDEST POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x1AA JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x20B SWAP2 SWAP1 PUSH2 0x486 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x246 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x24B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x25C DUP6 DUP4 DUP4 PUSH2 0x2C5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x284 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2B0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3173BDD1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x1A1 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0xE77 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1CD JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x2DA JUMPI PUSH2 0x2D5 DUP3 PUSH2 0x324 JUMP JUMPDEST PUSH2 0x31D JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2F1 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x1A1 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x334 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x52C DUP1 PUSH2 0x94B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x38F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3CE DUP5 PUSH2 0x35A JUMP JUMPDEST SWAP3 POP PUSH2 0x3DC PUSH1 0x20 DUP6 ADD PUSH2 0x35A JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 ADD PUSH1 0x1F DUP2 ADD DUP7 SGT PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x422 JUMPI PUSH2 0x422 PUSH2 0x376 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x450 JUMPI PUSH2 0x450 PUSH2 0x376 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH2 0x468 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x479 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x38C JUMP JUMPDEST DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x498 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x38C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x48F PUSH2 0x4BC PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0x10 ADD MSTORE PUSH2 0x48F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0xC PUSH2 0xE JUMP JUMPDEST STOP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x278F7943 PUSH1 0xE1 SHL EQ PUSH2 0x71 JUMPI PUSH1 0x40 MLOAD PUSH4 0x34AD5DBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x79 PUSH2 0x83 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x79 PUSH2 0xB2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x93 CALLDATASIZE PUSH1 0x4 DUP2 DUP5 PUSH2 0x312 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xA0 SWAP2 SWAP1 PUSH2 0x352 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xAE DUP3 DUP3 PUSH2 0xC2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x79 PUSH2 0xBD PUSH2 0x11D JUMP JUMPDEST PUSH2 0x155 JUMP JUMPDEST PUSH2 0xCB DUP3 PUSH2 0x179 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x115 JUMPI PUSH2 0x110 DUP3 DUP3 PUSH2 0x1F5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xAE PUSH2 0x26B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x150 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x174 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x212 SWAP2 SWAP1 PUSH2 0x42A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x24D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x252 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x262 DUP6 DUP4 DUP4 PUSH2 0x28A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x79 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x29F JUMPI PUSH2 0x29A DUP3 PUSH2 0x2E9 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2B6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x1AB JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2F9 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x37C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C3 JUMPI PUSH2 0x3C3 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3F2 JUMPI PUSH2 0x3F2 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x44B JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x431 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 DUP13 0xB8 0xEC PUSH11 0xA319CEA3007A73B49DD637 0xE3 DUP11 CREATE PUSH15 0x17CB5062BCB157CDEB56E85364736F PUSH13 0x634300081C0033608060405234 DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x52C CODESIZE SUB DUP1 PUSH2 0x52C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5E JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x67 DUP2 PUSH2 0x6E JUMP JUMPDEST POP POP PUSH2 0xEE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x42F DUP1 PUSH2 0xFD PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 EQ PUSH2 0x4F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x9623609D EQ PUSH2 0x93 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xA6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0x104 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0xA1 CALLDATASIZE PUSH1 0x4 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x118 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD7 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8A SWAP2 SWAP1 PUSH2 0x396 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0xFF CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0 JUMP JUMPDEST PUSH2 0x187 JUMP JUMPDEST PUSH2 0x10C PUSH2 0x1CA JUMP JUMPDEST PUSH2 0x116 PUSH1 0x0 PUSH2 0x1F7 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x120 PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x278F7943 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x4F1EF286 SWAP1 CALLVALUE SWAP1 PUSH2 0x150 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3CD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x18F PUSH2 0x1CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1BE JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E4FBDF7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C7 DUP2 PUSH2 0x1F7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x116 JUMPI PUSH1 0x40 MLOAD PUSH4 0x118CDAA7 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x1B5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 DUP4 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x287 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x292 DUP2 PUSH2 0x247 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A2 DUP2 PUSH2 0x247 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 ADD PUSH1 0x1F DUP2 ADD DUP7 SGT PUSH2 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E9 JUMPI PUSH2 0x2E9 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x318 JUMPI PUSH2 0x318 PUSH2 0x25C JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP9 LT ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x376 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x35A JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3A9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x350 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3A9 DUP2 PUSH2 0x247 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3F1 SWAP1 DUP4 ADD DUP5 PUSH2 0x350 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xB6 PUSH1 0xE4 DUP7 PUSH16 0xA7D104C2D56D6C7E80FCC5BEE8C6D878 RETURNDATACOPY SHR 0xB2 KECCAK256 0xFC INVALID DUP15 0xC1 DUP8 0xC PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER 0xB5 BALANCE 0x27 PUSH9 0x4A568B3173AE13B9F8 0xA6 ADD PUSH15 0x243E63B6E8EE1178D6A717850B5D61 SUB ","sourceMap":"243:392:21:-:0;;;492:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;611:5;618;625:4;611:5;625:4;1155:52:6;611:5:21;625:4;1155:29:6;:52::i;:::-;1081:133;;5305:12:11::1;5290:28;;;;;:::i;:::-;-1:-1:-1::0;;;;;1837:32:24;;;1819:51;;1807:2;1792:18;5290:28:11::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;5273:46:11::1;;::::0;5407:39:::1;5432:13;5600:6:::0;;;5520:93;5432:13:::1;5407:24;:39::i;:::-;5157:296:::0;;;492:141:21;;;243:392;;2264:344:7;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:7;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;2264:344;;:::o;2454:148::-;2573:18;:16;:18::i;:::-;2264:344;;:::o;3827:142::-;3890:43;3912:10;-1:-1:-1;;;;;;;;;;;3356:44:7;-1:-1:-1;;;;;3356:44:7;;3287:120;3912:10;3890:43;;;-1:-1:-1;;;;;2073:32:24;;;2055:51;;2142:32;;;2137:2;2122:18;;2115:60;2028:18;3890:43:7;;;;;;;3943:19;3953:8;3943:9;:19::i;:::-;3827:142;:::o;1671:281::-;1748:17;-1:-1:-1;;;;;1748:29:7;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:7;;-1:-1:-1;;;;;1837:32:24;;1805:47:7;;;1819:51:24;1792:18;;1805:47:7;;;;;;;;1744:119;1928:17;811:66;1872:47;:73;;-1:-1:-1;;;;;;1872:73:7;-1:-1:-1;;;;;1872:73:7;;;;;;;;;;-1:-1:-1;1671:281:7:o;3916:253:15:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:15;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4023:67:15;;-1:-1:-1;4023:67:15;-1:-1:-1;4107:55:15;4134:6;4023:67;;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:15:o;6113:122:7:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:7;;;;;;;;;;;6159:70;6113:122::o;3490:217::-;-1:-1:-1;;;;;3549:22:7;;3545:91;;3594:31;;-1:-1:-1;;;3594:31:7;;3622:1;3594:31;;;1819:51:24;1792:18;;3594:31:7;1673:203:24;3545:91:7;3692:8;-1:-1:-1;;;;;;;;;;;3645:38:7;1899:163:18:o;4437:582:15:-;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:15;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:15;;-1:-1:-1;;;;;1837:32:24;;4933:24:15;;;1819:51:24;1792:18;;4933:24:15;1673:203:24;4853:119:15;-1:-1:-1;4992:10:15;4605:408;4437:582;;;;;:::o;5559:487::-;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:15;;;;;;;;;;;243:392:21;;;;;;;;:::o;14:177:24:-;93:13;;-1:-1:-1;;;;;135:31:24;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:250;413:1;423:113;437:6;434:1;431:13;423:113;;;513:11;;;507:18;494:11;;;487:39;459:2;452:10;423:113;;;-1:-1:-1;;570:1:24;552:16;;545:27;328:250::o;583:1085::-;680:6;688;696;749:2;737:9;728:7;724:23;720:32;717:52;;;765:1;762;755:12;717:52;788:40;818:9;788:40;:::i;:::-;778:50;;847:49;892:2;881:9;877:18;847:49;:::i;:::-;940:2;925:18;;919:25;837:59;;-1:-1:-1;;;;;;956:30:24;;953:50;;;999:1;996;989:12;953:50;1022:22;;1075:4;1067:13;;1063:27;-1:-1:-1;1053:55:24;;1104:1;1101;1094:12;1053:55;1131:9;;-1:-1:-1;;;;;1152:30:24;;1149:56;;;1185:18;;:::i;:::-;1234:2;1228:9;1326:2;1288:17;;-1:-1:-1;;1284:31:24;;;1317:2;1280:40;1276:54;1264:67;;-1:-1:-1;;;;;1346:34:24;;1382:22;;;1343:62;1340:88;;;1408:18;;:::i;:::-;1444:2;1437:22;1468;;;1509:15;;;1526:2;1505:24;1502:37;-1:-1:-1;1499:57:24;;;1552:1;1549;1542:12;1499:57;1565:72;1630:6;1625:2;1617:6;1613:15;1608:2;1604;1600:11;1565:72;:::i;:::-;1656:6;1646:16;;;;;583:1085;;;;;:::o;2186:287::-;2315:3;2353:6;2347:13;2369:66;2428:6;2423:3;2416:4;2408:6;2404:17;2369:66;:::i;:::-;2451:16;;;;;2186:287;-1:-1:-1;;2186:287:24:o;:::-;243:392:21;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_1124":{"entryPoint":null,"id":1124,"parameterSlots":0,"returnSlots":0},"@_checkNonPayable_1088":{"entryPoint":619,"id":1088,"parameterSlots":0,"returnSlots":0},"@_delegate_1100":{"entryPoint":341,"id":1100,"parameterSlots":1,"returnSlots":0},"@_dispatchUpgradeToAndCall_1318":{"entryPoint":131,"id":1318,"parameterSlots":0,"returnSlots":0},"@_fallback_1116":{"entryPoint":178,"id":1116,"parameterSlots":0,"returnSlots":0},"@_fallback_1289":{"entryPoint":14,"id":1289,"parameterSlots":0,"returnSlots":0},"@_implementation_794":{"entryPoint":285,"id":794,"parameterSlots":0,"returnSlots":1},"@_proxyAdmin_1255":{"entryPoint":null,"id":1255,"parameterSlots":0,"returnSlots":1},"@_revert_1896":{"entryPoint":745,"id":1896,"parameterSlots":1,"returnSlots":0},"@_setImplementation_868":{"entryPoint":377,"id":868,"parameterSlots":1,"returnSlots":0},"@functionDelegateCall_1814":{"entryPoint":501,"id":1814,"parameterSlots":2,"returnSlots":1},"@getAddressSlot_1984":{"entryPoint":null,"id":1984,"parameterSlots":1,"returnSlots":1},"@getImplementation_841":{"entryPoint":null,"id":841,"parameterSlots":0,"returnSlots":1},"@upgradeToAndCall_904":{"entryPoint":194,"id":904,"parameterSlots":2,"returnSlots":0},"@verifyCallResultFromTarget_1854":{"entryPoint":650,"id":1854,"parameterSlots":3,"returnSlots":1},"abi_decode_tuple_t_address_payablet_bytes_memory_ptr":{"entryPoint":850,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1066,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"calldata_array_index_range_access_t_bytes_calldata_ptr":{"entryPoint":786,"id":null,"parameterSlots":4,"returnSlots":2},"panic_error_0x41":{"entryPoint":828,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nativeSrc":"0:2235:24","nodeType":"YulBlock","src":"0:2235:24","statements":[{"nativeSrc":"6:3:24","nodeType":"YulBlock","src":"6:3:24","statements":[]},{"body":{"nativeSrc":"144:201:24","nodeType":"YulBlock","src":"144:201:24","statements":[{"body":{"nativeSrc":"182:16:24","nodeType":"YulBlock","src":"182:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"191:1:24","nodeType":"YulLiteral","src":"191:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"194:1:24","nodeType":"YulLiteral","src":"194:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"184:6:24","nodeType":"YulIdentifier","src":"184:6:24"},"nativeSrc":"184:12:24","nodeType":"YulFunctionCall","src":"184:12:24"},"nativeSrc":"184:12:24","nodeType":"YulExpressionStatement","src":"184:12:24"}]},"condition":{"arguments":[{"name":"startIndex","nativeSrc":"160:10:24","nodeType":"YulIdentifier","src":"160:10:24"},{"name":"endIndex","nativeSrc":"172:8:24","nodeType":"YulIdentifier","src":"172:8:24"}],"functionName":{"name":"gt","nativeSrc":"157:2:24","nodeType":"YulIdentifier","src":"157:2:24"},"nativeSrc":"157:24:24","nodeType":"YulFunctionCall","src":"157:24:24"},"nativeSrc":"154:44:24","nodeType":"YulIf","src":"154:44:24"},{"body":{"nativeSrc":"231:16:24","nodeType":"YulBlock","src":"231:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"240:1:24","nodeType":"YulLiteral","src":"240:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"243:1:24","nodeType":"YulLiteral","src":"243:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"233:6:24","nodeType":"YulIdentifier","src":"233:6:24"},"nativeSrc":"233:12:24","nodeType":"YulFunctionCall","src":"233:12:24"},"nativeSrc":"233:12:24","nodeType":"YulExpressionStatement","src":"233:12:24"}]},"condition":{"arguments":[{"name":"endIndex","nativeSrc":"213:8:24","nodeType":"YulIdentifier","src":"213:8:24"},{"name":"length","nativeSrc":"223:6:24","nodeType":"YulIdentifier","src":"223:6:24"}],"functionName":{"name":"gt","nativeSrc":"210:2:24","nodeType":"YulIdentifier","src":"210:2:24"},"nativeSrc":"210:20:24","nodeType":"YulFunctionCall","src":"210:20:24"},"nativeSrc":"207:40:24","nodeType":"YulIf","src":"207:40:24"},{"nativeSrc":"256:36:24","nodeType":"YulAssignment","src":"256:36:24","value":{"arguments":[{"name":"offset","nativeSrc":"273:6:24","nodeType":"YulIdentifier","src":"273:6:24"},{"name":"startIndex","nativeSrc":"281:10:24","nodeType":"YulIdentifier","src":"281:10:24"}],"functionName":{"name":"add","nativeSrc":"269:3:24","nodeType":"YulIdentifier","src":"269:3:24"},"nativeSrc":"269:23:24","nodeType":"YulFunctionCall","src":"269:23:24"},"variableNames":[{"name":"offsetOut","nativeSrc":"256:9:24","nodeType":"YulIdentifier","src":"256:9:24"}]},{"nativeSrc":"301:38:24","nodeType":"YulAssignment","src":"301:38:24","value":{"arguments":[{"name":"endIndex","nativeSrc":"318:8:24","nodeType":"YulIdentifier","src":"318:8:24"},{"name":"startIndex","nativeSrc":"328:10:24","nodeType":"YulIdentifier","src":"328:10:24"}],"functionName":{"name":"sub","nativeSrc":"314:3:24","nodeType":"YulIdentifier","src":"314:3:24"},"nativeSrc":"314:25:24","nodeType":"YulFunctionCall","src":"314:25:24"},"variableNames":[{"name":"lengthOut","nativeSrc":"301:9:24","nodeType":"YulIdentifier","src":"301:9:24"}]}]},"name":"calldata_array_index_range_access_t_bytes_calldata_ptr","nativeSrc":"14:331:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nativeSrc":"78:6:24","nodeType":"YulTypedName","src":"78:6:24","type":""},{"name":"length","nativeSrc":"86:6:24","nodeType":"YulTypedName","src":"86:6:24","type":""},{"name":"startIndex","nativeSrc":"94:10:24","nodeType":"YulTypedName","src":"94:10:24","type":""},{"name":"endIndex","nativeSrc":"106:8:24","nodeType":"YulTypedName","src":"106:8:24","type":""}],"returnVariables":[{"name":"offsetOut","nativeSrc":"119:9:24","nodeType":"YulTypedName","src":"119:9:24","type":""},{"name":"lengthOut","nativeSrc":"130:9:24","nodeType":"YulTypedName","src":"130:9:24","type":""}],"src":"14:331:24"},{"body":{"nativeSrc":"382:95:24","nodeType":"YulBlock","src":"382:95:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"399:1:24","nodeType":"YulLiteral","src":"399:1:24","type":"","value":"0"},{"arguments":[{"kind":"number","nativeSrc":"406:3:24","nodeType":"YulLiteral","src":"406:3:24","type":"","value":"224"},{"kind":"number","nativeSrc":"411:10:24","nodeType":"YulLiteral","src":"411:10:24","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nativeSrc":"402:3:24","nodeType":"YulIdentifier","src":"402:3:24"},"nativeSrc":"402:20:24","nodeType":"YulFunctionCall","src":"402:20:24"}],"functionName":{"name":"mstore","nativeSrc":"392:6:24","nodeType":"YulIdentifier","src":"392:6:24"},"nativeSrc":"392:31:24","nodeType":"YulFunctionCall","src":"392:31:24"},"nativeSrc":"392:31:24","nodeType":"YulExpressionStatement","src":"392:31:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"439:1:24","nodeType":"YulLiteral","src":"439:1:24","type":"","value":"4"},{"kind":"number","nativeSrc":"442:4:24","nodeType":"YulLiteral","src":"442:4:24","type":"","value":"0x41"}],"functionName":{"name":"mstore","nativeSrc":"432:6:24","nodeType":"YulIdentifier","src":"432:6:24"},"nativeSrc":"432:15:24","nodeType":"YulFunctionCall","src":"432:15:24"},"nativeSrc":"432:15:24","nodeType":"YulExpressionStatement","src":"432:15:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"463:1:24","nodeType":"YulLiteral","src":"463:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"466:4:24","nodeType":"YulLiteral","src":"466:4:24","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"456:6:24","nodeType":"YulIdentifier","src":"456:6:24"},"nativeSrc":"456:15:24","nodeType":"YulFunctionCall","src":"456:15:24"},"nativeSrc":"456:15:24","nodeType":"YulExpressionStatement","src":"456:15:24"}]},"name":"panic_error_0x41","nativeSrc":"350:127:24","nodeType":"YulFunctionDefinition","src":"350:127:24"},{"body":{"nativeSrc":"586:1022:24","nodeType":"YulBlock","src":"586:1022:24","statements":[{"body":{"nativeSrc":"632:16:24","nodeType":"YulBlock","src":"632:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"641:1:24","nodeType":"YulLiteral","src":"641:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"644:1:24","nodeType":"YulLiteral","src":"644:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"634:6:24","nodeType":"YulIdentifier","src":"634:6:24"},"nativeSrc":"634:12:24","nodeType":"YulFunctionCall","src":"634:12:24"},"nativeSrc":"634:12:24","nodeType":"YulExpressionStatement","src":"634:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nativeSrc":"607:7:24","nodeType":"YulIdentifier","src":"607:7:24"},{"name":"headStart","nativeSrc":"616:9:24","nodeType":"YulIdentifier","src":"616:9:24"}],"functionName":{"name":"sub","nativeSrc":"603:3:24","nodeType":"YulIdentifier","src":"603:3:24"},"nativeSrc":"603:23:24","nodeType":"YulFunctionCall","src":"603:23:24"},{"kind":"number","nativeSrc":"628:2:24","nodeType":"YulLiteral","src":"628:2:24","type":"","value":"64"}],"functionName":{"name":"slt","nativeSrc":"599:3:24","nodeType":"YulIdentifier","src":"599:3:24"},"nativeSrc":"599:32:24","nodeType":"YulFunctionCall","src":"599:32:24"},"nativeSrc":"596:52:24","nodeType":"YulIf","src":"596:52:24"},{"nativeSrc":"657:36:24","nodeType":"YulVariableDeclaration","src":"657:36:24","value":{"arguments":[{"name":"headStart","nativeSrc":"683:9:24","nodeType":"YulIdentifier","src":"683:9:24"}],"functionName":{"name":"calldataload","nativeSrc":"670:12:24","nodeType":"YulIdentifier","src":"670:12:24"},"nativeSrc":"670:23:24","nodeType":"YulFunctionCall","src":"670:23:24"},"variables":[{"name":"value","nativeSrc":"661:5:24","nodeType":"YulTypedName","src":"661:5:24","type":""}]},{"body":{"nativeSrc":"756:16:24","nodeType":"YulBlock","src":"756:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"765:1:24","nodeType":"YulLiteral","src":"765:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"768:1:24","nodeType":"YulLiteral","src":"768:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"758:6:24","nodeType":"YulIdentifier","src":"758:6:24"},"nativeSrc":"758:12:24","nodeType":"YulFunctionCall","src":"758:12:24"},"nativeSrc":"758:12:24","nodeType":"YulExpressionStatement","src":"758:12:24"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nativeSrc":"715:5:24","nodeType":"YulIdentifier","src":"715:5:24"},{"arguments":[{"name":"value","nativeSrc":"726:5:24","nodeType":"YulIdentifier","src":"726:5:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"741:3:24","nodeType":"YulLiteral","src":"741:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"746:1:24","nodeType":"YulLiteral","src":"746:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"737:3:24","nodeType":"YulIdentifier","src":"737:3:24"},"nativeSrc":"737:11:24","nodeType":"YulFunctionCall","src":"737:11:24"},{"kind":"number","nativeSrc":"750:1:24","nodeType":"YulLiteral","src":"750:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"733:3:24","nodeType":"YulIdentifier","src":"733:3:24"},"nativeSrc":"733:19:24","nodeType":"YulFunctionCall","src":"733:19:24"}],"functionName":{"name":"and","nativeSrc":"722:3:24","nodeType":"YulIdentifier","src":"722:3:24"},"nativeSrc":"722:31:24","nodeType":"YulFunctionCall","src":"722:31:24"}],"functionName":{"name":"eq","nativeSrc":"712:2:24","nodeType":"YulIdentifier","src":"712:2:24"},"nativeSrc":"712:42:24","nodeType":"YulFunctionCall","src":"712:42:24"}],"functionName":{"name":"iszero","nativeSrc":"705:6:24","nodeType":"YulIdentifier","src":"705:6:24"},"nativeSrc":"705:50:24","nodeType":"YulFunctionCall","src":"705:50:24"},"nativeSrc":"702:70:24","nodeType":"YulIf","src":"702:70:24"},{"nativeSrc":"781:15:24","nodeType":"YulAssignment","src":"781:15:24","value":{"name":"value","nativeSrc":"791:5:24","nodeType":"YulIdentifier","src":"791:5:24"},"variableNames":[{"name":"value0","nativeSrc":"781:6:24","nodeType":"YulIdentifier","src":"781:6:24"}]},{"nativeSrc":"805:46:24","nodeType":"YulVariableDeclaration","src":"805:46:24","value":{"arguments":[{"arguments":[{"name":"headStart","nativeSrc":"836:9:24","nodeType":"YulIdentifier","src":"836:9:24"},{"kind":"number","nativeSrc":"847:2:24","nodeType":"YulLiteral","src":"847:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"832:3:24","nodeType":"YulIdentifier","src":"832:3:24"},"nativeSrc":"832:18:24","nodeType":"YulFunctionCall","src":"832:18:24"}],"functionName":{"name":"calldataload","nativeSrc":"819:12:24","nodeType":"YulIdentifier","src":"819:12:24"},"nativeSrc":"819:32:24","nodeType":"YulFunctionCall","src":"819:32:24"},"variables":[{"name":"offset","nativeSrc":"809:6:24","nodeType":"YulTypedName","src":"809:6:24","type":""}]},{"body":{"nativeSrc":"894:16:24","nodeType":"YulBlock","src":"894:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"903:1:24","nodeType":"YulLiteral","src":"903:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"906:1:24","nodeType":"YulLiteral","src":"906:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"896:6:24","nodeType":"YulIdentifier","src":"896:6:24"},"nativeSrc":"896:12:24","nodeType":"YulFunctionCall","src":"896:12:24"},"nativeSrc":"896:12:24","nodeType":"YulExpressionStatement","src":"896:12:24"}]},"condition":{"arguments":[{"name":"offset","nativeSrc":"866:6:24","nodeType":"YulIdentifier","src":"866:6:24"},{"kind":"number","nativeSrc":"874:18:24","nodeType":"YulLiteral","src":"874:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"863:2:24","nodeType":"YulIdentifier","src":"863:2:24"},"nativeSrc":"863:30:24","nodeType":"YulFunctionCall","src":"863:30:24"},"nativeSrc":"860:50:24","nodeType":"YulIf","src":"860:50:24"},{"nativeSrc":"919:32:24","nodeType":"YulVariableDeclaration","src":"919:32:24","value":{"arguments":[{"name":"headStart","nativeSrc":"933:9:24","nodeType":"YulIdentifier","src":"933:9:24"},{"name":"offset","nativeSrc":"944:6:24","nodeType":"YulIdentifier","src":"944:6:24"}],"functionName":{"name":"add","nativeSrc":"929:3:24","nodeType":"YulIdentifier","src":"929:3:24"},"nativeSrc":"929:22:24","nodeType":"YulFunctionCall","src":"929:22:24"},"variables":[{"name":"_1","nativeSrc":"923:2:24","nodeType":"YulTypedName","src":"923:2:24","type":""}]},{"body":{"nativeSrc":"999:16:24","nodeType":"YulBlock","src":"999:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1008:1:24","nodeType":"YulLiteral","src":"1008:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1011:1:24","nodeType":"YulLiteral","src":"1011:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1001:6:24","nodeType":"YulIdentifier","src":"1001:6:24"},"nativeSrc":"1001:12:24","nodeType":"YulFunctionCall","src":"1001:12:24"},"nativeSrc":"1001:12:24","nodeType":"YulExpressionStatement","src":"1001:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"978:2:24","nodeType":"YulIdentifier","src":"978:2:24"},{"kind":"number","nativeSrc":"982:4:24","nodeType":"YulLiteral","src":"982:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"974:3:24","nodeType":"YulIdentifier","src":"974:3:24"},"nativeSrc":"974:13:24","nodeType":"YulFunctionCall","src":"974:13:24"},{"name":"dataEnd","nativeSrc":"989:7:24","nodeType":"YulIdentifier","src":"989:7:24"}],"functionName":{"name":"slt","nativeSrc":"970:3:24","nodeType":"YulIdentifier","src":"970:3:24"},"nativeSrc":"970:27:24","nodeType":"YulFunctionCall","src":"970:27:24"}],"functionName":{"name":"iszero","nativeSrc":"963:6:24","nodeType":"YulIdentifier","src":"963:6:24"},"nativeSrc":"963:35:24","nodeType":"YulFunctionCall","src":"963:35:24"},"nativeSrc":"960:55:24","nodeType":"YulIf","src":"960:55:24"},{"nativeSrc":"1024:30:24","nodeType":"YulVariableDeclaration","src":"1024:30:24","value":{"arguments":[{"name":"_1","nativeSrc":"1051:2:24","nodeType":"YulIdentifier","src":"1051:2:24"}],"functionName":{"name":"calldataload","nativeSrc":"1038:12:24","nodeType":"YulIdentifier","src":"1038:12:24"},"nativeSrc":"1038:16:24","nodeType":"YulFunctionCall","src":"1038:16:24"},"variables":[{"name":"length","nativeSrc":"1028:6:24","nodeType":"YulTypedName","src":"1028:6:24","type":""}]},{"body":{"nativeSrc":"1097:22:24","nodeType":"YulBlock","src":"1097:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1099:16:24","nodeType":"YulIdentifier","src":"1099:16:24"},"nativeSrc":"1099:18:24","nodeType":"YulFunctionCall","src":"1099:18:24"},"nativeSrc":"1099:18:24","nodeType":"YulExpressionStatement","src":"1099:18:24"}]},"condition":{"arguments":[{"name":"length","nativeSrc":"1069:6:24","nodeType":"YulIdentifier","src":"1069:6:24"},{"kind":"number","nativeSrc":"1077:18:24","nodeType":"YulLiteral","src":"1077:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1066:2:24","nodeType":"YulIdentifier","src":"1066:2:24"},"nativeSrc":"1066:30:24","nodeType":"YulFunctionCall","src":"1066:30:24"},"nativeSrc":"1063:56:24","nodeType":"YulIf","src":"1063:56:24"},{"nativeSrc":"1128:23:24","nodeType":"YulVariableDeclaration","src":"1128:23:24","value":{"arguments":[{"kind":"number","nativeSrc":"1148:2:24","nodeType":"YulLiteral","src":"1148:2:24","type":"","value":"64"}],"functionName":{"name":"mload","nativeSrc":"1142:5:24","nodeType":"YulIdentifier","src":"1142:5:24"},"nativeSrc":"1142:9:24","nodeType":"YulFunctionCall","src":"1142:9:24"},"variables":[{"name":"memPtr","nativeSrc":"1132:6:24","nodeType":"YulTypedName","src":"1132:6:24","type":""}]},{"nativeSrc":"1160:85:24","nodeType":"YulVariableDeclaration","src":"1160:85:24","value":{"arguments":[{"name":"memPtr","nativeSrc":"1182:6:24","nodeType":"YulIdentifier","src":"1182:6:24"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"length","nativeSrc":"1206:6:24","nodeType":"YulIdentifier","src":"1206:6:24"},{"kind":"number","nativeSrc":"1214:4:24","nodeType":"YulLiteral","src":"1214:4:24","type":"","value":"0x1f"}],"functionName":{"name":"add","nativeSrc":"1202:3:24","nodeType":"YulIdentifier","src":"1202:3:24"},"nativeSrc":"1202:17:24","nodeType":"YulFunctionCall","src":"1202:17:24"},{"arguments":[{"kind":"number","nativeSrc":"1225:2:24","nodeType":"YulLiteral","src":"1225:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1221:3:24","nodeType":"YulIdentifier","src":"1221:3:24"},"nativeSrc":"1221:7:24","nodeType":"YulFunctionCall","src":"1221:7:24"}],"functionName":{"name":"and","nativeSrc":"1198:3:24","nodeType":"YulIdentifier","src":"1198:3:24"},"nativeSrc":"1198:31:24","nodeType":"YulFunctionCall","src":"1198:31:24"},{"kind":"number","nativeSrc":"1231:2:24","nodeType":"YulLiteral","src":"1231:2:24","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"1194:3:24","nodeType":"YulIdentifier","src":"1194:3:24"},"nativeSrc":"1194:40:24","nodeType":"YulFunctionCall","src":"1194:40:24"},{"arguments":[{"kind":"number","nativeSrc":"1240:2:24","nodeType":"YulLiteral","src":"1240:2:24","type":"","value":"31"}],"functionName":{"name":"not","nativeSrc":"1236:3:24","nodeType":"YulIdentifier","src":"1236:3:24"},"nativeSrc":"1236:7:24","nodeType":"YulFunctionCall","src":"1236:7:24"}],"functionName":{"name":"and","nativeSrc":"1190:3:24","nodeType":"YulIdentifier","src":"1190:3:24"},"nativeSrc":"1190:54:24","nodeType":"YulFunctionCall","src":"1190:54:24"}],"functionName":{"name":"add","nativeSrc":"1178:3:24","nodeType":"YulIdentifier","src":"1178:3:24"},"nativeSrc":"1178:67:24","nodeType":"YulFunctionCall","src":"1178:67:24"},"variables":[{"name":"newFreePtr","nativeSrc":"1164:10:24","nodeType":"YulTypedName","src":"1164:10:24","type":""}]},{"body":{"nativeSrc":"1320:22:24","nodeType":"YulBlock","src":"1320:22:24","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nativeSrc":"1322:16:24","nodeType":"YulIdentifier","src":"1322:16:24"},"nativeSrc":"1322:18:24","nodeType":"YulFunctionCall","src":"1322:18:24"},"nativeSrc":"1322:18:24","nodeType":"YulExpressionStatement","src":"1322:18:24"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nativeSrc":"1263:10:24","nodeType":"YulIdentifier","src":"1263:10:24"},{"kind":"number","nativeSrc":"1275:18:24","nodeType":"YulLiteral","src":"1275:18:24","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nativeSrc":"1260:2:24","nodeType":"YulIdentifier","src":"1260:2:24"},"nativeSrc":"1260:34:24","nodeType":"YulFunctionCall","src":"1260:34:24"},{"arguments":[{"name":"newFreePtr","nativeSrc":"1299:10:24","nodeType":"YulIdentifier","src":"1299:10:24"},{"name":"memPtr","nativeSrc":"1311:6:24","nodeType":"YulIdentifier","src":"1311:6:24"}],"functionName":{"name":"lt","nativeSrc":"1296:2:24","nodeType":"YulIdentifier","src":"1296:2:24"},"nativeSrc":"1296:22:24","nodeType":"YulFunctionCall","src":"1296:22:24"}],"functionName":{"name":"or","nativeSrc":"1257:2:24","nodeType":"YulIdentifier","src":"1257:2:24"},"nativeSrc":"1257:62:24","nodeType":"YulFunctionCall","src":"1257:62:24"},"nativeSrc":"1254:88:24","nodeType":"YulIf","src":"1254:88:24"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1358:2:24","nodeType":"YulLiteral","src":"1358:2:24","type":"","value":"64"},{"name":"newFreePtr","nativeSrc":"1362:10:24","nodeType":"YulIdentifier","src":"1362:10:24"}],"functionName":{"name":"mstore","nativeSrc":"1351:6:24","nodeType":"YulIdentifier","src":"1351:6:24"},"nativeSrc":"1351:22:24","nodeType":"YulFunctionCall","src":"1351:22:24"},"nativeSrc":"1351:22:24","nodeType":"YulExpressionStatement","src":"1351:22:24"},{"expression":{"arguments":[{"name":"memPtr","nativeSrc":"1389:6:24","nodeType":"YulIdentifier","src":"1389:6:24"},{"name":"length","nativeSrc":"1397:6:24","nodeType":"YulIdentifier","src":"1397:6:24"}],"functionName":{"name":"mstore","nativeSrc":"1382:6:24","nodeType":"YulIdentifier","src":"1382:6:24"},"nativeSrc":"1382:22:24","nodeType":"YulFunctionCall","src":"1382:22:24"},"nativeSrc":"1382:22:24","nodeType":"YulExpressionStatement","src":"1382:22:24"},{"body":{"nativeSrc":"1454:16:24","nodeType":"YulBlock","src":"1454:16:24","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1463:1:24","nodeType":"YulLiteral","src":"1463:1:24","type":"","value":"0"},{"kind":"number","nativeSrc":"1466:1:24","nodeType":"YulLiteral","src":"1466:1:24","type":"","value":"0"}],"functionName":{"name":"revert","nativeSrc":"1456:6:24","nodeType":"YulIdentifier","src":"1456:6:24"},"nativeSrc":"1456:12:24","nodeType":"YulFunctionCall","src":"1456:12:24"},"nativeSrc":"1456:12:24","nodeType":"YulExpressionStatement","src":"1456:12:24"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nativeSrc":"1427:2:24","nodeType":"YulIdentifier","src":"1427:2:24"},{"name":"length","nativeSrc":"1431:6:24","nodeType":"YulIdentifier","src":"1431:6:24"}],"functionName":{"name":"add","nativeSrc":"1423:3:24","nodeType":"YulIdentifier","src":"1423:3:24"},"nativeSrc":"1423:15:24","nodeType":"YulFunctionCall","src":"1423:15:24"},{"kind":"number","nativeSrc":"1440:2:24","nodeType":"YulLiteral","src":"1440:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1419:3:24","nodeType":"YulIdentifier","src":"1419:3:24"},"nativeSrc":"1419:24:24","nodeType":"YulFunctionCall","src":"1419:24:24"},{"name":"dataEnd","nativeSrc":"1445:7:24","nodeType":"YulIdentifier","src":"1445:7:24"}],"functionName":{"name":"gt","nativeSrc":"1416:2:24","nodeType":"YulIdentifier","src":"1416:2:24"},"nativeSrc":"1416:37:24","nodeType":"YulFunctionCall","src":"1416:37:24"},"nativeSrc":"1413:57:24","nodeType":"YulIf","src":"1413:57:24"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1496:6:24","nodeType":"YulIdentifier","src":"1496:6:24"},{"kind":"number","nativeSrc":"1504:2:24","nodeType":"YulLiteral","src":"1504:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1492:3:24","nodeType":"YulIdentifier","src":"1492:3:24"},"nativeSrc":"1492:15:24","nodeType":"YulFunctionCall","src":"1492:15:24"},{"arguments":[{"name":"_1","nativeSrc":"1513:2:24","nodeType":"YulIdentifier","src":"1513:2:24"},{"kind":"number","nativeSrc":"1517:2:24","nodeType":"YulLiteral","src":"1517:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1509:3:24","nodeType":"YulIdentifier","src":"1509:3:24"},"nativeSrc":"1509:11:24","nodeType":"YulFunctionCall","src":"1509:11:24"},{"name":"length","nativeSrc":"1522:6:24","nodeType":"YulIdentifier","src":"1522:6:24"}],"functionName":{"name":"calldatacopy","nativeSrc":"1479:12:24","nodeType":"YulIdentifier","src":"1479:12:24"},"nativeSrc":"1479:50:24","nodeType":"YulFunctionCall","src":"1479:50:24"},"nativeSrc":"1479:50:24","nodeType":"YulExpressionStatement","src":"1479:50:24"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nativeSrc":"1553:6:24","nodeType":"YulIdentifier","src":"1553:6:24"},{"name":"length","nativeSrc":"1561:6:24","nodeType":"YulIdentifier","src":"1561:6:24"}],"functionName":{"name":"add","nativeSrc":"1549:3:24","nodeType":"YulIdentifier","src":"1549:3:24"},"nativeSrc":"1549:19:24","nodeType":"YulFunctionCall","src":"1549:19:24"},{"kind":"number","nativeSrc":"1570:2:24","nodeType":"YulLiteral","src":"1570:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1545:3:24","nodeType":"YulIdentifier","src":"1545:3:24"},"nativeSrc":"1545:28:24","nodeType":"YulFunctionCall","src":"1545:28:24"},{"kind":"number","nativeSrc":"1575:1:24","nodeType":"YulLiteral","src":"1575:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"1538:6:24","nodeType":"YulIdentifier","src":"1538:6:24"},"nativeSrc":"1538:39:24","nodeType":"YulFunctionCall","src":"1538:39:24"},"nativeSrc":"1538:39:24","nodeType":"YulExpressionStatement","src":"1538:39:24"},{"nativeSrc":"1586:16:24","nodeType":"YulAssignment","src":"1586:16:24","value":{"name":"memPtr","nativeSrc":"1596:6:24","nodeType":"YulIdentifier","src":"1596:6:24"},"variableNames":[{"name":"value1","nativeSrc":"1586:6:24","nodeType":"YulIdentifier","src":"1586:6:24"}]}]},"name":"abi_decode_tuple_t_address_payablet_bytes_memory_ptr","nativeSrc":"482:1126:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"544:9:24","nodeType":"YulTypedName","src":"544:9:24","type":""},{"name":"dataEnd","nativeSrc":"555:7:24","nodeType":"YulTypedName","src":"555:7:24","type":""}],"returnVariables":[{"name":"value0","nativeSrc":"567:6:24","nodeType":"YulTypedName","src":"567:6:24","type":""},{"name":"value1","nativeSrc":"575:6:24","nodeType":"YulTypedName","src":"575:6:24","type":""}],"src":"482:1126:24"},{"body":{"nativeSrc":"1714:102:24","nodeType":"YulBlock","src":"1714:102:24","statements":[{"nativeSrc":"1724:26:24","nodeType":"YulAssignment","src":"1724:26:24","value":{"arguments":[{"name":"headStart","nativeSrc":"1736:9:24","nodeType":"YulIdentifier","src":"1736:9:24"},{"kind":"number","nativeSrc":"1747:2:24","nodeType":"YulLiteral","src":"1747:2:24","type":"","value":"32"}],"functionName":{"name":"add","nativeSrc":"1732:3:24","nodeType":"YulIdentifier","src":"1732:3:24"},"nativeSrc":"1732:18:24","nodeType":"YulFunctionCall","src":"1732:18:24"},"variableNames":[{"name":"tail","nativeSrc":"1724:4:24","nodeType":"YulIdentifier","src":"1724:4:24"}]},{"expression":{"arguments":[{"name":"headStart","nativeSrc":"1766:9:24","nodeType":"YulIdentifier","src":"1766:9:24"},{"arguments":[{"name":"value0","nativeSrc":"1781:6:24","nodeType":"YulIdentifier","src":"1781:6:24"},{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"1797:3:24","nodeType":"YulLiteral","src":"1797:3:24","type":"","value":"160"},{"kind":"number","nativeSrc":"1802:1:24","nodeType":"YulLiteral","src":"1802:1:24","type":"","value":"1"}],"functionName":{"name":"shl","nativeSrc":"1793:3:24","nodeType":"YulIdentifier","src":"1793:3:24"},"nativeSrc":"1793:11:24","nodeType":"YulFunctionCall","src":"1793:11:24"},{"kind":"number","nativeSrc":"1806:1:24","nodeType":"YulLiteral","src":"1806:1:24","type":"","value":"1"}],"functionName":{"name":"sub","nativeSrc":"1789:3:24","nodeType":"YulIdentifier","src":"1789:3:24"},"nativeSrc":"1789:19:24","nodeType":"YulFunctionCall","src":"1789:19:24"}],"functionName":{"name":"and","nativeSrc":"1777:3:24","nodeType":"YulIdentifier","src":"1777:3:24"},"nativeSrc":"1777:32:24","nodeType":"YulFunctionCall","src":"1777:32:24"}],"functionName":{"name":"mstore","nativeSrc":"1759:6:24","nodeType":"YulIdentifier","src":"1759:6:24"},"nativeSrc":"1759:51:24","nodeType":"YulFunctionCall","src":"1759:51:24"},"nativeSrc":"1759:51:24","nodeType":"YulExpressionStatement","src":"1759:51:24"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nativeSrc":"1613:203:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nativeSrc":"1683:9:24","nodeType":"YulTypedName","src":"1683:9:24","type":""},{"name":"value0","nativeSrc":"1694:6:24","nodeType":"YulTypedName","src":"1694:6:24","type":""}],"returnVariables":[{"name":"tail","nativeSrc":"1705:4:24","nodeType":"YulTypedName","src":"1705:4:24","type":""}],"src":"1613:203:24"},{"body":{"nativeSrc":"1958:275:24","nodeType":"YulBlock","src":"1958:275:24","statements":[{"nativeSrc":"1968:27:24","nodeType":"YulVariableDeclaration","src":"1968:27:24","value":{"arguments":[{"name":"value0","nativeSrc":"1988:6:24","nodeType":"YulIdentifier","src":"1988:6:24"}],"functionName":{"name":"mload","nativeSrc":"1982:5:24","nodeType":"YulIdentifier","src":"1982:5:24"},"nativeSrc":"1982:13:24","nodeType":"YulFunctionCall","src":"1982:13:24"},"variables":[{"name":"length","nativeSrc":"1972:6:24","nodeType":"YulTypedName","src":"1972:6:24","type":""}]},{"nativeSrc":"2004:10:24","nodeType":"YulVariableDeclaration","src":"2004:10:24","value":{"kind":"number","nativeSrc":"2013:1:24","nodeType":"YulLiteral","src":"2013:1:24","type":"","value":"0"},"variables":[{"name":"i","nativeSrc":"2008:1:24","nodeType":"YulTypedName","src":"2008:1:24","type":""}]},{"body":{"nativeSrc":"2075:77:24","nodeType":"YulBlock","src":"2075:77:24","statements":[{"expression":{"arguments":[{"arguments":[{"name":"pos","nativeSrc":"2100:3:24","nodeType":"YulIdentifier","src":"2100:3:24"},{"name":"i","nativeSrc":"2105:1:24","nodeType":"YulIdentifier","src":"2105:1:24"}],"functionName":{"name":"add","nativeSrc":"2096:3:24","nodeType":"YulIdentifier","src":"2096:3:24"},"nativeSrc":"2096:11:24","nodeType":"YulFunctionCall","src":"2096:11:24"},{"arguments":[{"arguments":[{"arguments":[{"name":"value0","nativeSrc":"2123:6:24","nodeType":"YulIdentifier","src":"2123:6:24"},{"name":"i","nativeSrc":"2131:1:24","nodeType":"YulIdentifier","src":"2131:1:24"}],"functionName":{"name":"add","nativeSrc":"2119:3:24","nodeType":"YulIdentifier","src":"2119:3:24"},"nativeSrc":"2119:14:24","nodeType":"YulFunctionCall","src":"2119:14:24"},{"kind":"number","nativeSrc":"2135:4:24","nodeType":"YulLiteral","src":"2135:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2115:3:24","nodeType":"YulIdentifier","src":"2115:3:24"},"nativeSrc":"2115:25:24","nodeType":"YulFunctionCall","src":"2115:25:24"}],"functionName":{"name":"mload","nativeSrc":"2109:5:24","nodeType":"YulIdentifier","src":"2109:5:24"},"nativeSrc":"2109:32:24","nodeType":"YulFunctionCall","src":"2109:32:24"}],"functionName":{"name":"mstore","nativeSrc":"2089:6:24","nodeType":"YulIdentifier","src":"2089:6:24"},"nativeSrc":"2089:53:24","nodeType":"YulFunctionCall","src":"2089:53:24"},"nativeSrc":"2089:53:24","nodeType":"YulExpressionStatement","src":"2089:53:24"}]},"condition":{"arguments":[{"name":"i","nativeSrc":"2034:1:24","nodeType":"YulIdentifier","src":"2034:1:24"},{"name":"length","nativeSrc":"2037:6:24","nodeType":"YulIdentifier","src":"2037:6:24"}],"functionName":{"name":"lt","nativeSrc":"2031:2:24","nodeType":"YulIdentifier","src":"2031:2:24"},"nativeSrc":"2031:13:24","nodeType":"YulFunctionCall","src":"2031:13:24"},"nativeSrc":"2023:129:24","nodeType":"YulForLoop","post":{"nativeSrc":"2045:21:24","nodeType":"YulBlock","src":"2045:21:24","statements":[{"nativeSrc":"2047:17:24","nodeType":"YulAssignment","src":"2047:17:24","value":{"arguments":[{"name":"i","nativeSrc":"2056:1:24","nodeType":"YulIdentifier","src":"2056:1:24"},{"kind":"number","nativeSrc":"2059:4:24","nodeType":"YulLiteral","src":"2059:4:24","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2052:3:24","nodeType":"YulIdentifier","src":"2052:3:24"},"nativeSrc":"2052:12:24","nodeType":"YulFunctionCall","src":"2052:12:24"},"variableNames":[{"name":"i","nativeSrc":"2047:1:24","nodeType":"YulIdentifier","src":"2047:1:24"}]}]},"pre":{"nativeSrc":"2027:3:24","nodeType":"YulBlock","src":"2027:3:24","statements":[]},"src":"2023:129:24"},{"nativeSrc":"2161:26:24","nodeType":"YulVariableDeclaration","src":"2161:26:24","value":{"arguments":[{"name":"pos","nativeSrc":"2175:3:24","nodeType":"YulIdentifier","src":"2175:3:24"},{"name":"length","nativeSrc":"2180:6:24","nodeType":"YulIdentifier","src":"2180:6:24"}],"functionName":{"name":"add","nativeSrc":"2171:3:24","nodeType":"YulIdentifier","src":"2171:3:24"},"nativeSrc":"2171:16:24","nodeType":"YulFunctionCall","src":"2171:16:24"},"variables":[{"name":"_1","nativeSrc":"2165:2:24","nodeType":"YulTypedName","src":"2165:2:24","type":""}]},{"expression":{"arguments":[{"name":"_1","nativeSrc":"2203:2:24","nodeType":"YulIdentifier","src":"2203:2:24"},{"kind":"number","nativeSrc":"2207:1:24","nodeType":"YulLiteral","src":"2207:1:24","type":"","value":"0"}],"functionName":{"name":"mstore","nativeSrc":"2196:6:24","nodeType":"YulIdentifier","src":"2196:6:24"},"nativeSrc":"2196:13:24","nodeType":"YulFunctionCall","src":"2196:13:24"},"nativeSrc":"2196:13:24","nodeType":"YulExpressionStatement","src":"2196:13:24"},{"nativeSrc":"2218:9:24","nodeType":"YulAssignment","src":"2218:9:24","value":{"name":"_1","nativeSrc":"2225:2:24","nodeType":"YulIdentifier","src":"2225:2:24"},"variableNames":[{"name":"end","nativeSrc":"2218:3:24","nodeType":"YulIdentifier","src":"2218:3:24"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nativeSrc":"1821:412:24","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nativeSrc":"1934:3:24","nodeType":"YulTypedName","src":"1934:3:24","type":""},{"name":"value0","nativeSrc":"1939:6:24","nodeType":"YulTypedName","src":"1939:6:24","type":""}],"returnVariables":[{"name":"end","nativeSrc":"1950:3:24","nodeType":"YulTypedName","src":"1950:3:24","type":""}],"src":"1821:412:24"}]},"contents":"{\n    { }\n    function calldata_array_index_range_access_t_bytes_calldata_ptr(offset, length, startIndex, endIndex) -> offsetOut, lengthOut\n    {\n        if gt(startIndex, endIndex) { revert(0, 0) }\n        if gt(endIndex, length) { revert(0, 0) }\n        offsetOut := add(offset, startIndex)\n        lengthOut := sub(endIndex, startIndex)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_address_payablet_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_1)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_1, 32), length)\n        mstore(add(add(memPtr, length), 32), 0)\n        value1 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value0, i), 0x20)))\n        }\n        let _1 := add(pos, length)\n        mstore(_1, 0)\n        end := _1\n    }\n}","id":24,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{"1210":[{"length":32,"start":16}]},"linkReferences":{},"object":"608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007b576000356001600160e01b03191663278f794360e11b14610071576040516334ad5dbb60e21b815260040160405180910390fd5b610079610083565b565b6100796100b2565b6000806100933660048184610312565b8101906100a09190610352565b915091506100ae82826100c2565b5050565b6100796100bd61011d565b610155565b6100cb82610179565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101155761011082826101f5565b505050565b6100ae61026b565b60006101507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610174573d6000f35b3d6000fd5b806001600160a01b03163b6000036101b457604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610212919061042a565b600060405180830381855af49150503d806000811461024d576040519150601f19603f3d011682016040523d82523d6000602084013e610252565b606091505b509150915061026285838361028a565b95945050505050565b34156100795760405163b398979f60e01b815260040160405180910390fd5b60608261029f5761029a826102e9565b6102e2565b81511580156102b657506001600160a01b0384163b155b156102df57604051639996b31560e01b81526001600160a01b03851660048201526024016101ab565b50805b9392505050565b8051156102f95780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000808585111561032257600080fd5b8386111561032f57600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561036557600080fd5b82356001600160a01b038116811461037c57600080fd5b9150602083013567ffffffffffffffff81111561039857600080fd5b8301601f810185136103a957600080fd5b803567ffffffffffffffff8111156103c3576103c361033c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103f2576103f261033c565b60405281815282820160200187101561040a57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b8181101561044b5760208186018101518583015201610431565b50600092019182525091905056fea2646970667358221220918cb8ec6aa319cea3007a73b49dd637e38af06e17cb5062bcb157cdeb56e85364736f6c634300081c0033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH2 0xC PUSH2 0xE JUMP JUMPDEST STOP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0x278F7943 PUSH1 0xE1 SHL EQ PUSH2 0x71 JUMPI PUSH1 0x40 MLOAD PUSH4 0x34AD5DBB PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x79 PUSH2 0x83 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x79 PUSH2 0xB2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x93 CALLDATASIZE PUSH1 0x4 DUP2 DUP5 PUSH2 0x312 JUMP JUMPDEST DUP2 ADD SWAP1 PUSH2 0xA0 SWAP2 SWAP1 PUSH2 0x352 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xAE DUP3 DUP3 PUSH2 0xC2 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x79 PUSH2 0xBD PUSH2 0x11D JUMP JUMPDEST PUSH2 0x155 JUMP JUMPDEST PUSH2 0xCB DUP3 PUSH2 0x179 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x115 JUMPI PUSH2 0x110 DUP3 DUP3 PUSH2 0x1F5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xAE PUSH2 0x26B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x150 PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH2 0x174 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x1B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x212 SWAP2 SWAP1 PUSH2 0x42A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x24D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x252 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x262 DUP6 DUP4 DUP4 PUSH2 0x28A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x79 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x29F JUMPI PUSH2 0x29A DUP3 PUSH2 0x2E9 JUMP JUMPDEST PUSH2 0x2E2 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x2B6 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x2DF JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x1AB JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x2F9 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP6 DUP6 GT ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP7 GT ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP3 ADD SWAP4 SWAP2 SWAP1 SWAP3 SUB SWAP2 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x37C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x398 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C3 JUMPI PUSH2 0x3C3 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3F2 JUMPI PUSH2 0x3F2 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 ADD PUSH1 0x20 ADD DUP8 LT ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x44B JUMPI PUSH1 0x20 DUP2 DUP7 ADD DUP2 ADD MLOAD DUP6 DUP4 ADD MSTORE ADD PUSH2 0x431 JUMP JUMPDEST POP PUSH1 0x0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 DUP13 0xB8 0xEC PUSH11 0xA319CEA3007A73B49DD637 0xE3 DUP11 CREATE PUSH15 0x17CB5062BCB157CDEB56E85364736F PUSH13 0x634300081C0033000000000000 ","sourceMap":"243:392:21:-:0;;;2649:11:8;:9;:11::i;:::-;243:392:21;5755:369:11;5600:6;-1:-1:-1;;;;;5816:27:11;:10;:27;5812:306;;5863:7;;-1:-1:-1;;;;;;5863:7:11;-1:-1:-1;;;5863:65:11;5859:201;;5955:24;;-1:-1:-1;;;5955:24:11;;;;;;;;;;;5859:201;6018:27;:25;:27::i;:::-;5755:369::o;5812:306::-;6090:17;:15;:17::i;6326:217::-;6382:25;;6441:12;:8;6450:1;6441:8;6382:25;6441:12;:::i;:::-;6430:42;;;;;;;:::i;:::-;6381:91;;;;6482:54;6512:17;6531:4;6482:29;:54::i;:::-;6371:172;;6326:217::o;2323:83:8:-;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;2264:344:7:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:7;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;6371:172:11;;6326:217::o;2454:148:7:-;2573:18;:16;:18::i;1583:132:6:-;1650:7;1676:32;811:66:7;1519:53;-1:-1:-1;;;;;1519:53:7;;1441:138;1676:32:6;1669:39;;1583:132;:::o;949:895:8:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27;1671:281:7;1748:17;-1:-1:-1;;;;;1748:29:7;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:7;;-1:-1:-1;;;;;1777:32:24;;1805:47:7;;;1759:51:24;1732:18;;1805:47:7;;;;;;;;1744:119;811:66;1872:73;;-1:-1:-1;;;;;;1872:73:7;-1:-1:-1;;;;;1872:73:7;;;;;;;;;;1671:281::o;3916:253:15:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:15;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:15:o;6113:122:7:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:7;;;;;;;;;;;4437:582:15;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:15;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:15;;-1:-1:-1;;;;;1777:32:24;;4933:24:15;;;1759:51:24;1732:18;;4933:24:15;1613:203:24;4853:119:15;-1:-1:-1;4992:10:15;4605:408;4437:582;;;;;:::o;5559:487::-;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:15;;;;;;;;;;;14:331:24;119:9;130;172:8;160:10;157:24;154:44;;;194:1;191;184:12;154:44;223:6;213:8;210:20;207:40;;;243:1;240;233:12;207:40;-1:-1:-1;;269:23:24;;;314:25;;;;;-1:-1:-1;14:331:24:o;350:127::-;411:10;406:3;402:20;399:1;392:31;442:4;439:1;432:15;466:4;463:1;456:15;482:1126;567:6;575;628:2;616:9;607:7;603:23;599:32;596:52;;;644:1;641;634:12;596:52;670:23;;-1:-1:-1;;;;;722:31:24;;712:42;;702:70;;768:1;765;758:12;702:70;791:5;-1:-1:-1;847:2:24;832:18;;819:32;874:18;863:30;;860:50;;;906:1;903;896:12;860:50;929:22;;982:4;974:13;;970:27;-1:-1:-1;960:55:24;;1011:1;1008;1001:12;960:55;1051:2;1038:16;1077:18;1069:6;1066:30;1063:56;;;1099:18;;:::i;:::-;1148:2;1142:9;1240:2;1202:17;;-1:-1:-1;;1198:31:24;;;1231:2;1194:40;1190:54;1178:67;;1275:18;1260:34;;1296:22;;;1257:62;1254:88;;;1322:18;;:::i;:::-;1358:2;1351:22;1382;;;1423:15;;;1440:2;1419:24;1416:37;-1:-1:-1;1413:57:24;;;1466:1;1463;1456:12;1413:57;1522:6;1517:2;1513;1509:11;1504:2;1496:6;1492:15;1479:50;1575:1;1570:2;1561:6;1553;1549:19;1545:28;1538:39;1596:6;1586:16;;;;;482:1126;;;;;:::o;1821:412::-;1950:3;1988:6;1982:13;2013:1;2023:129;2037:6;2034:1;2031:13;2023:129;;;2135:4;2119:14;;;2115:25;;2109:32;2096:11;;;2089:53;2052:12;2023:129;;;-1:-1:-1;2207:1:24;2171:16;;2196:13;;;-1:-1:-1;2171:16:24;1821:412;-1:-1:-1;1821:412:24:o"},"gasEstimates":{"creation":{"codeDepositCost":"233400","executionCost":"infinite","totalCost":"infinite"},"external":{"":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"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\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"Transparent upgradeable proxy for VideoPayment contract\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` 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.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"ProxyDeniedAdminAccess()\":[{\"details\":\"The proxy caller is the current admin, and can't fallback to the proxy target.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initialize the proxy\",\"params\":{\"admin\":\"Address of the proxy admin\",\"data\":\"Initialization data\",\"logic\":\"Address of the logic contract\"}}},\"title\":\"VideoPaymentProxy\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/VideoPaymentProxy.sol\":\"VideoPaymentProxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.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 {Context} from \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * 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 Ownable is Context {\\n    address private _owner;\\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    constructor(address initialOwner) {\\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        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        address oldOwner = _owner;\\n        _owner = newOwner;\\n        emit OwnershipTransferred(oldOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\"},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\\n */\\ninterface IERC1967 {\\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\",\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Proxy.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {Proxy} from \\\"../Proxy.sol\\\";\\nimport {ERC1967Utils} from \\\"./ERC1967Utils.sol\\\";\\n\\n/**\\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\\n * implementation address that can be changed. This address is stored in storage in the location specified by\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\\n * implementation behind the proxy.\\n */\\ncontract ERC1967Proxy is Proxy {\\n    /**\\n     * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\\n     *\\n     * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\\n     * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\\n     *\\n     * Requirements:\\n     *\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    constructor(address implementation, bytes memory _data) payable {\\n        ERC1967Utils.upgradeToAndCall(implementation, _data);\\n    }\\n\\n    /**\\n     * @dev Returns the current implementation address.\\n     *\\n     * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\\n     * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\\n     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\\n     */\\n    function _implementation() internal view virtual override returns (address) {\\n        return ERC1967Utils.getImplementation();\\n    }\\n}\\n\",\"keccak256\":\"0xa3066ff86b94128a9d3956a63a0511fa1aae41bd455772ab587b32ff322acb2e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/ERC1967/ERC1967Utils.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {IBeacon} from \\\"../beacon/IBeacon.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {Address} from \\\"../../utils/Address.sol\\\";\\nimport {StorageSlot} from \\\"../../utils/StorageSlot.sol\\\";\\n\\n/**\\n * @dev This library provides getters and event emitting update functions for\\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\\n */\\nlibrary ERC1967Utils {\\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 ERC-1967 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 IERC1967.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 ERC-1967) 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 ERC-1967 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 IERC1967.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 ERC-1967 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 IERC1967.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\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\\n * be specified by overriding the virtual {_implementation} function.\\n *\\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\\n * different contract through the {_delegate} function.\\n *\\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\\n */\\nabstract contract Proxy {\\n    /**\\n     * @dev Delegates the current call to `implementation`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _delegate(address implementation) internal virtual {\\n        assembly {\\n            // Copy msg.data. We take full control of memory in this inline assembly\\n            // block because it will not return to Solidity code. We overwrite the\\n            // Solidity scratch pad at memory position 0.\\n            calldatacopy(0, 0, calldatasize())\\n\\n            // Call the implementation.\\n            // out and outsize are 0 because we don't know the size yet.\\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\\n\\n            // Copy the returned data.\\n            returndatacopy(0, 0, returndatasize())\\n\\n            switch result\\n            // delegatecall returns 0 on error.\\n            case 0 {\\n                revert(0, returndatasize())\\n            }\\n            default {\\n                return(0, returndatasize())\\n            }\\n        }\\n    }\\n\\n    /**\\n     * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\\n     * function and {_fallback} should delegate.\\n     */\\n    function _implementation() internal view virtual returns (address);\\n\\n    /**\\n     * @dev Delegates the current call to the address returned by `_implementation()`.\\n     *\\n     * This function does not return to its internal call site, it will return directly to the external caller.\\n     */\\n    function _fallback() internal virtual {\\n        _delegate(_implementation());\\n    }\\n\\n    /**\\n     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\\n     * function in the contract matches the call data.\\n     */\\n    fallback() external payable virtual {\\n        _fallback();\\n    }\\n}\\n\",\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"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/proxy/transparent/ProxyAdmin.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/ProxyAdmin.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {ITransparentUpgradeableProxy} from \\\"./TransparentUpgradeableProxy.sol\\\";\\nimport {Ownable} from \\\"../../access/Ownable.sol\\\";\\n\\n/**\\n * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an\\n * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.\\n */\\ncontract ProxyAdmin is Ownable {\\n    /**\\n     * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address,address)`\\n     * and `upgradeAndCall(address,address,bytes)` are present, and `upgrade` must be used if no function should be called,\\n     * while `upgradeAndCall` will invoke the `receive` function if the third argument is the empty byte string.\\n     * If the getter returns `\\\"5.0.0\\\"`, only `upgradeAndCall(address,address,bytes)` is present, and the third 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 Sets the initial owner who can perform upgrades.\\n     */\\n    constructor(address initialOwner) Ownable(initialOwner) {}\\n\\n    /**\\n     * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation.\\n     * See {TransparentUpgradeableProxy-_dispatchUpgradeToAndCall}.\\n     *\\n     * Requirements:\\n     *\\n     * - This contract must be the admin of `proxy`.\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    function upgradeAndCall(\\n        ITransparentUpgradeableProxy proxy,\\n        address implementation,\\n        bytes memory data\\n    ) public payable virtual onlyOwner {\\n        proxy.upgradeToAndCall{value: msg.value}(implementation, data);\\n    }\\n}\\n\",\"keccak256\":\"0x46f86003755f50eff00a7c5aaf493ae62e024142b8aec4493a313851d3c14872\",\"license\":\"MIT\"},\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (proxy/transparent/TransparentUpgradeableProxy.sol)\\n\\npragma solidity ^0.8.22;\\n\\nimport {ERC1967Utils} from \\\"../ERC1967/ERC1967Utils.sol\\\";\\nimport {ERC1967Proxy} from \\\"../ERC1967/ERC1967Proxy.sol\\\";\\nimport {IERC1967} from \\\"../../interfaces/IERC1967.sol\\\";\\nimport {ProxyAdmin} from \\\"./ProxyAdmin.sol\\\";\\n\\n/**\\n * @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\\n * does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\\n * mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\\n * include them in the ABI so this interface must be used to interact with it.\\n */\\ninterface ITransparentUpgradeableProxy is IERC1967 {\\n    /// @dev See {UUPSUpgradeable-upgradeToAndCall}\\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable;\\n}\\n\\n/**\\n * @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\\n *\\n * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\\n * clashing], which can potentially be used in an attack, this contract uses the\\n * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\\n * things that go hand in hand:\\n *\\n * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\\n * that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\\n * 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\\n * the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\\n * the proxy admin cannot fallback to the target implementation.\\n *\\n * These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\\n * dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\\n * call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\\n * allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\\n * interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\\n *\\n * NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\\n * inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\\n * mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\\n * fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\\n * implementation.\\n *\\n * NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\\n * meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\\n *\\n * IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\\n * immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\\n * overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\\n * undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\\n * is generally fine if the implementation is trusted.\\n *\\n * WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\\n * compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\\n * function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\\n * could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\\n */\\ncontract TransparentUpgradeableProxy is ERC1967Proxy {\\n    // An immutable address for the admin to avoid unnecessary SLOADs before each call\\n    // at the expense of removing the ability to change the admin once it's set.\\n    // This is acceptable if the admin is always a ProxyAdmin instance or similar contract\\n    // with its own ability to transfer the permissions to another account.\\n    address private immutable _admin;\\n\\n    /**\\n     * @dev The proxy caller is the current admin, and can't fallback to the proxy target.\\n     */\\n    error ProxyDeniedAdminAccess();\\n\\n    /**\\n     * @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\\n     * backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\\n     * {ERC1967Proxy-constructor}.\\n     */\\n    constructor(address _logic, address initialOwner, bytes memory _data) payable ERC1967Proxy(_logic, _data) {\\n        _admin = address(new ProxyAdmin(initialOwner));\\n        // Set the storage value and emit an event for ERC-1967 compatibility\\n        ERC1967Utils.changeAdmin(_proxyAdmin());\\n    }\\n\\n    /**\\n     * @dev Returns the admin of this proxy.\\n     */\\n    function _proxyAdmin() internal view virtual returns (address) {\\n        return _admin;\\n    }\\n\\n    /**\\n     * @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior.\\n     */\\n    function _fallback() internal virtual override {\\n        if (msg.sender == _proxyAdmin()) {\\n            if (msg.sig != ITransparentUpgradeableProxy.upgradeToAndCall.selector) {\\n                revert ProxyDeniedAdminAccess();\\n            } else {\\n                _dispatchUpgradeToAndCall();\\n            }\\n        } else {\\n            super._fallback();\\n        }\\n    }\\n\\n    /**\\n     * @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\\n     *\\n     * Requirements:\\n     *\\n     * - If `data` is empty, `msg.value` must be zero.\\n     */\\n    function _dispatchUpgradeToAndCall() private {\\n        (address newImplementation, bytes memory data) = abi.decode(msg.data[4:], (address, bytes));\\n        ERC1967Utils.upgradeToAndCall(newImplementation, data);\\n    }\\n}\\n\",\"keccak256\":\"0x92579f452fe663595a898cbac85d80bb3868a6c9f034f19ba7fbebdfa3b65a4d\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.2.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.20;\\n\\nimport {Errors} from \\\"./Errors.sol\\\";\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev There's no code at `target` (it is not a contract).\\n     */\\n    error AddressEmptyCode(address target);\\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 Errors.InsufficientBalance(address(this).balance, amount);\\n        }\\n\\n        (bool success, bytes memory returndata) = recipient.call{value: amount}(\\\"\\\");\\n        if (!success) {\\n            _revert(returndata);\\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     * {Errors.FailedCall} 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 Errors.InsufficientBalance(address(this).balance, value);\\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 {Errors.FailedCall}) in case\\n     * of an 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 {Errors.FailedCall} 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 {Errors.FailedCall}.\\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            assembly (\\\"memory-safe\\\") {\\n                let returndata_size := mload(returndata)\\n                revert(add(32, returndata), returndata_size)\\n            }\\n        } else {\\n            revert Errors.FailedCall();\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n\\n    function _contextSuffixLength() internal view virtual returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Errors.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\\n\\npragma solidity ^0.8.20;\\n\\n/**\\n * @dev Collection of common custom errors used in multiple contracts\\n *\\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\\n * It is recommended to avoid relying on the error API for critical functionality.\\n *\\n * _Available since v5.1._\\n */\\nlibrary Errors {\\n    /**\\n     * @dev The ETH balance of the account is not enough to perform the operation.\\n     */\\n    error InsufficientBalance(uint256 balance, uint256 needed);\\n\\n    /**\\n     * @dev A call to an address target failed. The target may have reverted.\\n     */\\n    error FailedCall();\\n\\n    /**\\n     * @dev The deployment failed.\\n     */\\n    error FailedDeployment();\\n\\n    /**\\n     * @dev A necessary precompile is missing.\\n     */\\n    error MissingPrecompile(address);\\n}\\n\",\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v5.1.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 ERC-1967 implementation slot:\\n * ```solidity\\n * contract ERC1967 {\\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\\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 *\\n * TIP: Consider using this library along with {SlotDerivation}.\\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 Int256Slot {\\n        int256 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        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\\n     */\\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\\n     */\\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\\n     */\\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\\n     */\\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\n            r.slot := slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\\n     */\\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\\n     */\\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\\n        assembly (\\\"memory-safe\\\") {\\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        assembly (\\\"memory-safe\\\") {\\n            r.slot := store.slot\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\"},\"contracts/VideoPaymentProxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport \\\"@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\\\";\\n\\n/**\\n * @title VideoPaymentProxy\\n * @dev Transparent upgradeable proxy for VideoPayment contract\\n */\\ncontract VideoPaymentProxy is TransparentUpgradeableProxy {\\n    /**\\n     * @dev Initialize the proxy\\n     * @param logic Address of the logic contract\\n     * @param admin Address of the proxy admin\\n     * @param data Initialization data\\n     */\\n    constructor(\\n        address logic,\\n        address admin,\\n        bytes memory data\\n    ) TransparentUpgradeableProxy(logic, admin, data) {}\\n}\\n\",\"keccak256\":\"0xd743027fe448afe0718c3143ffc3e40d1e7884dadc5f0ed073e277a3eadf42ea\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/interfaces/IVideoPayment.sol":{"IVideoPayment":{"abi":[{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"ContractPaused","type":"error"},{"inputs":[],"name":"InsufficientPayment","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidContent","type":"error"},{"inputs":[],"name":"NoValidPermission","type":"error"},{"inputs":[],"name":"NotAdmin","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"UnsupportedToken","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchNativePurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"indexed":false,"internalType":"address","name":"paymentToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"ContentConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"address","name":"paymentToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"viewCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"validUntil","type":"uint256"}],"name":"ContentPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"address","name":"nftContract","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"NFTPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"NativePriceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"viewCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"validUntil","type":"uint256"}],"name":"NativePurchased","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"PermissionExpired","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"SupportedTokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"SupportedTokenRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"TokenPriceUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"contentId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"remainingViews","type":"uint256"}],"name":"ViewConsumed","type":"event"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"addSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"}],"name":"batchConsumeView","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"batchPurchase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"}],"name":"batchPurchaseWithNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"uint256[]","name":"nativePrices","type":"uint256[]"},{"internalType":"uint256[]","name":"defaultViewCounts","type":"uint256[]"},{"internalType":"uint256[]","name":"viewDurations","type":"uint256[]"},{"internalType":"bool[]","name":"isActiveArray","type":"bool[]"}],"name":"batchSetContentConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"uint256[]","name":"prices","type":"uint256[]"}],"name":"batchUpdateNativePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256[]","name":"prices","type":"uint256[]"}],"name":"batchUpdateTokenPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"consumeView","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"getPermissionDetails","outputs":[{"components":[{"internalType":"uint256","name":"purchaseTime","type":"uint256"},{"internalType":"uint256","name":"remainingViews","type":"uint256"},{"internalType":"bool","name":"isValid","type":"bool"}],"internalType":"struct VideoPaymentStorage.ViewPermission","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256[]","name":"contentIds","type":"uint256[]"}],"name":"getUserPermissions","outputs":[{"components":[{"internalType":"uint256","name":"purchaseTime","type":"uint256"},{"internalType":"uint256","name":"remainingViews","type":"uint256"},{"internalType":"bool","name":"isValid","type":"bool"}],"internalType":"struct VideoPaymentStorage.ViewPermission[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"hasViewPermission","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"isContentActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"isSupportedToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"purchaseContent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"nftContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"purchaseWithNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"}],"name":"purchaseWithNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"removeSupportedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"uint256","name":"nativePrice","type":"uint256"},{"internalType":"uint256","name":"defaultViewCount","type":"uint256"},{"internalType":"uint256","name":"viewDuration","type":"uint256"},{"internalType":"bool","name":"isActive","type":"bool"}],"name":"setContentConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"updateNativePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"contentId","type":"uint256"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"updateTokenPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for VideoPayment contract","kind":"dev","methods":{},"title":"IVideoPayment","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"addAdmin(address)":"70480275","addSupportedToken(address)":"6d69fcaf","batchConsumeView(address[],uint256[])":"529e2b32","batchPurchase(uint256[],address,uint256)":"99ea24fe","batchPurchaseWithNative(uint256[])":"21f06438","batchSetContentConfig(uint256[],uint256[],uint256[],uint256[],bool[])":"09b952be","batchUpdateNativePrice(uint256[],uint256[])":"f1aa52f4","batchUpdateTokenPrice(uint256[],address,uint256[])":"8f0ff11b","consumeView(address,uint256)":"05059571","getPermissionDetails(address,uint256)":"8d13660e","getUserPermissions(address,uint256[])":"b303f53f","hasViewPermission(address,uint256)":"caae24b3","isContentActive(uint256)":"40033b3d","isSupportedToken(address)":"240028e8","migrate()":"8fd3ab80","pause()":"8456cb59","purchaseContent(uint256,address,uint256)":"b6f1d140","purchaseWithNFT(uint256,address,uint256)":"86778641","purchaseWithNative(uint256)":"c3c12e69","removeAdmin(address)":"1785f53c","removeSupportedToken(address)":"76319190","setContentConfig(uint256,uint256,uint256,uint256,bool)":"b1b105fe","unpause()":"3f4ba83a","updateNativePrice(uint256,uint256)":"773f2054","updateTokenPrice(uint256,address,uint256)":"3428cebb","version()":"54fd4d50"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ArrayLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientPayment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoValidPermission\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotAdmin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AdminAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AdminRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"BatchNativePurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"BatchPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"ContentConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"viewCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"name\":\"ContentPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nftContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"NFTPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"NativePriceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"viewCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"validUntil\",\"type\":\"uint256\"}],\"name\":\"NativePurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"PermissionExpired\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SupportedTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SupportedTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"TokenPriceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"}],\"name\":\"ViewConsumed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"addSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"users\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"}],\"name\":\"batchConsumeView\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"\",\"type\":\"bool[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"}],\"name\":\"batchPurchase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"}],\"name\":\"batchPurchaseWithNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"nativePrices\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"defaultViewCounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"viewDurations\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"isActiveArray\",\"type\":\"bool[]\"}],\"name\":\"batchSetContentConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"prices\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdateNativePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"prices\",\"type\":\"uint256[]\"}],\"name\":\"batchUpdateTokenPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"consumeView\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"getPermissionDetails\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"purchaseTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"}],\"internalType\":\"struct VideoPaymentStorage.ViewPermission\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"contentIds\",\"type\":\"uint256[]\"}],\"name\":\"getUserPermissions\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"purchaseTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingViews\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isValid\",\"type\":\"bool\"}],\"internalType\":\"struct VideoPaymentStorage.ViewPermission[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"hasViewPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"isContentActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isSupportedToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"purchaseContent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"nftContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"purchaseWithNFT\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"}],\"name\":\"purchaseWithNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"removeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"removeSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nativePrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"defaultViewCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"viewDuration\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isActive\",\"type\":\"bool\"}],\"name\":\"setContentConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"updateNativePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"contentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"updateTokenPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for VideoPayment contract\",\"kind\":\"dev\",\"methods\":{},\"title\":\"IVideoPayment\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IVideoPayment.sol\":\"IVideoPayment\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IVideoPayment.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport \\\"../libraries/VideoPaymentStorage.sol\\\";\\n\\n/**\\n * @title IVideoPayment\\n * @dev Interface for VideoPayment contract\\n */\\ninterface IVideoPayment {\\n    // Custom errors\\n    error NotOwner();\\n    error NotAdmin();\\n    error ContractPaused();\\n    error InvalidContent();\\n    error UnsupportedToken();\\n    error InsufficientPayment();\\n    error NoValidPermission();\\n    error ArrayLengthMismatch();\\n    error ZeroAddress();\\n    error InvalidAmount();\\n\\n    // Events - Purchase related\\n    event ContentPurchased(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        address paymentToken,\\n        uint256 amount,\\n        uint256 viewCount,\\n        uint256 validUntil\\n    );\\n\\n    event NativePurchased(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        uint256 amount,\\n        uint256 viewCount,\\n        uint256 validUntil\\n    );\\n\\n    event BatchPurchased(\\n        address indexed user,\\n        uint256[] contentIds,\\n        address paymentToken,\\n        uint256 totalAmount\\n    );\\n\\n    event BatchNativePurchased(\\n        address indexed user,\\n        uint256[] contentIds,\\n        uint256 totalAmount\\n    );\\n\\n    event NFTPurchased(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        address nftContract,\\n        uint256 tokenId\\n    );\\n\\n    // Events - Permission related\\n    event ViewConsumed(\\n        address indexed user,\\n        uint256 indexed contentId,\\n        uint256 remainingViews\\n    );\\n\\n    event PermissionExpired(address indexed user, uint256 indexed contentId);\\n\\n    // Events - Management related\\n    event AdminAdded(address indexed admin);\\n    event AdminRemoved(address indexed admin);\\n    event ContentConfigUpdated(uint256 indexed contentId);\\n    event TokenPriceUpdated(\\n        uint256 indexed contentId,\\n        address indexed token,\\n        uint256 price\\n    );\\n    event NativePriceUpdated(uint256 indexed contentId, uint256 price);\\n    event SupportedTokenAdded(address indexed token);\\n    event SupportedTokenRemoved(address indexed token);\\n    event Paused();\\n    event Unpaused();\\n    event Upgraded(address indexed newImplementation);\\n\\n    // Owner management functions\\n    function addAdmin(address admin) external;\\n    function removeAdmin(address admin) external;\\n\\n    // Content management functions\\n    function setContentConfig(\\n        uint256 contentId,\\n        uint256 nativePrice,\\n        uint256 defaultViewCount,\\n        uint256 viewDuration,\\n        bool isActive\\n    ) external;\\n    function batchSetContentConfig(\\n        uint256[] memory contentIds,\\n        uint256[] memory nativePrices,\\n        uint256[] memory defaultViewCounts,\\n        uint256[] memory viewDurations,\\n        bool[] memory isActiveArray\\n    ) external;\\n    function isContentActive(uint256 contentId) external view returns (bool);\\n\\n    // Price management functions\\n    function updateTokenPrice(\\n        uint256 contentId,\\n        address token,\\n        uint256 price\\n    ) external;\\n    function batchUpdateTokenPrice(\\n        uint256[] memory contentIds,\\n        address token,\\n        uint256[] memory prices\\n    ) external;\\n    function updateNativePrice(uint256 contentId, uint256 price) external;\\n    function batchUpdateNativePrice(\\n        uint256[] memory contentIds,\\n        uint256[] memory prices\\n    ) external;\\n\\n    // Payment token management functions\\n    function addSupportedToken(address token) external;\\n    function removeSupportedToken(address token) external;\\n    function isSupportedToken(address token) external view returns (bool);\\n\\n    // Purchase functions\\n    function purchaseContent(\\n        uint256 contentId,\\n        address paymentToken,\\n        uint256 amount\\n    ) external;\\n    function purchaseWithNative(uint256 contentId) external payable;\\n    function batchPurchase(\\n        uint256[] memory contentIds,\\n        address paymentToken,\\n        uint256 totalAmount\\n    ) external;\\n    function batchPurchaseWithNative(\\n        uint256[] memory contentIds\\n    ) external payable;\\n    function purchaseWithNFT(\\n        uint256 contentId,\\n        address nftContract,\\n        uint256 tokenId\\n    ) external;\\n\\n    // Permission verification functions\\n    function hasViewPermission(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (bool);\\n    function getUserPermissions(\\n        address user,\\n        uint256[] memory contentIds\\n    ) external view returns (VideoPaymentStorage.ViewPermission[] memory);\\n    function getPermissionDetails(\\n        address user,\\n        uint256 contentId\\n    ) external view returns (VideoPaymentStorage.ViewPermission memory);\\n    function consumeView(\\n        address user,\\n        uint256 contentId\\n    ) external returns (bool);\\n    function batchConsumeView(\\n        address[] memory users,\\n        uint256[] memory contentIds\\n    ) external returns (bool[] memory);\\n\\n    // Emergency control functions\\n    function pause() external;\\n    function unpause() external;\\n\\n    // Upgrade functions\\n    function version() external view returns (uint256);\\n    function migrate() external;\\n}\\n\",\"keccak256\":\"0xf4f2e68285f9fa3c26b0fb61ae356ee6f837e9367dd5ad1add688f49751914cd\",\"license\":\"MIT\"},\"contracts/libraries/VideoPaymentStorage.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\n/**\\n * @title VideoPaymentStorage\\n * @dev Storage layout for VideoPayment contract to ensure upgrade compatibility\\n */\\nlibrary VideoPaymentStorage {\\n    // Storage layout version for upgrade compatibility\\n    uint256 constant STORAGE_VERSION = 1;\\n\\n    struct ContentConfig {\\n        mapping(address => uint256) tokenPrices; // ERC20 token prices\\n        uint256 nativePrice; // Native coin price\\n        uint256 defaultViewCount; // Default view count when purchased\\n        uint256 viewDuration; // View validity duration in seconds\\n        bool isActive; // Whether content is purchasable\\n    }\\n\\n    struct ViewPermission {\\n        uint256 purchaseTime; // Purchase timestamp\\n        uint256 remainingViews; // Remaining view count\\n        bool isValid; // Whether permission is valid\\n    }\\n\\n    struct VideoPaymentStorageStruct {\\n        // Owner and admin management\\n        address owner;\\n        mapping(address => bool) isAdmin;\\n        // Content management\\n        mapping(uint256 => ContentConfig) contentConfigs;\\n        // User permissions\\n        mapping(address => mapping(uint256 => ViewPermission)) userPermissions;\\n        // Supported payment tokens\\n        mapping(address => bool) supportedTokens;\\n        // Emergency pause\\n        bool paused;\\n        // Contract version\\n        uint256 version;\\n        // Reserved storage slots for future upgrades\\n        uint256[50] __gap;\\n    }\\n}\\n\",\"keccak256\":\"0x039f47df083413b22a6a07bbcd73eae115935d4dba5b14e307ba78831fa8d640\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/libraries/VideoPaymentStorage.sol":{"VideoPaymentStorage":{"abi":[],"devdoc":{"details":"Storage layout for VideoPayment contract to ensure upgrade compatibility","kind":"dev","methods":{},"title":"VideoPaymentStorage","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203c52adfb39181c1ebe7e93fbefd56adf13583105e7bca53bccffb8df7557cba764736f6c634300081c0033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODECOPY MSTORE 0xAD 0xFB CODECOPY XOR SHR 0x1E 0xBE PUSH31 0x93FBEFD56ADF13583105E7BCA53BCCFFB8DF7557CBA764736F6C634300081C STOP CALLER ","sourceMap":"177:1288:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;177:1288:23;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203c52adfb39181c1ebe7e93fbefd56adf13583105e7bca53bccffb8df7557cba764736f6c634300081c0033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODECOPY MSTORE 0xAD 0xFB CODECOPY XOR SHR 0x1E 0xBE PUSH31 0x93FBEFD56ADF13583105E7BCA53BCCFFB8DF7557CBA764736F6C634300081C STOP CALLER ","sourceMap":"177:1288:23:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Storage layout for VideoPayment contract to ensure upgrade compatibility\",\"kind\":\"dev\",\"methods\":{},\"title\":\"VideoPaymentStorage\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/VideoPaymentStorage.sol\":\"VideoPaymentStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/libraries/VideoPaymentStorage.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\n/**\\n * @title VideoPaymentStorage\\n * @dev Storage layout for VideoPayment contract to ensure upgrade compatibility\\n */\\nlibrary VideoPaymentStorage {\\n    // Storage layout version for upgrade compatibility\\n    uint256 constant STORAGE_VERSION = 1;\\n\\n    struct ContentConfig {\\n        mapping(address => uint256) tokenPrices; // ERC20 token prices\\n        uint256 nativePrice; // Native coin price\\n        uint256 defaultViewCount; // Default view count when purchased\\n        uint256 viewDuration; // View validity duration in seconds\\n        bool isActive; // Whether content is purchasable\\n    }\\n\\n    struct ViewPermission {\\n        uint256 purchaseTime; // Purchase timestamp\\n        uint256 remainingViews; // Remaining view count\\n        bool isValid; // Whether permission is valid\\n    }\\n\\n    struct VideoPaymentStorageStruct {\\n        // Owner and admin management\\n        address owner;\\n        mapping(address => bool) isAdmin;\\n        // Content management\\n        mapping(uint256 => ContentConfig) contentConfigs;\\n        // User permissions\\n        mapping(address => mapping(uint256 => ViewPermission)) userPermissions;\\n        // Supported payment tokens\\n        mapping(address => bool) supportedTokens;\\n        // Emergency pause\\n        bool paused;\\n        // Contract version\\n        uint256 version;\\n        // Reserved storage slots for future upgrades\\n        uint256[50] __gap;\\n    }\\n}\\n\",\"keccak256\":\"0x039f47df083413b22a6a07bbcd73eae115935d4dba5b14e307ba78831fa8d640\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}}}}}